私はこれで新しく、別のファイルからAsyncTaskを実行する関数を呼び出す必要があります。AsyncTaskはどうやって入ってくるのですかdoInBackgroundは実行されませんが、二回目は実行されます
MainActivity.javaコード
public class MainActivity extends AppCompatActivity {
String res;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Asynctasktest newAsy = new Asynctasktest();
res = newAsy.ValidateUser();
Toast.makeText(getBaseContext(), "'"+res+"'", Toast.LENGTH_LONG).show();
}
}
とAsyncTaskTest.javaコード
public class Asynctasktest extends MainActivity {
String Res;
private class GetFWork extends AsyncTask<Void,Void,String> {
@Override
protected void onPreExecute() {
Res = "onPreExecute";
}
@Override
protected String doInBackground(Void... param) {
return "am i here";
}
@Override
protected void onPostExecute(String Result) {
super.onPostExecute(Result);
Res = Result;
}
}
public String ValidateUser(){
final GetFWork Fl = new GetFWork();
Fl.execute();
return Res;
}
}
だから私はその上で示した、 "私はここにいる" が、私は "onPreExecute" を取得したテキストを取得する必要がありますまずはdoInBackgroundを実行しないでください。
これはあなたのアプリでの出来事を追跡する非常に基本的な方法です。 'Log'を使うか、単にブレークポイントでデバッグしてください。 – Vucko
最初の呼び出しはdoInBackground(..) 'をヒットする必要があります。 'doInBackground(..)'の先頭に 'android.os.Debug.waitForDebugger();'を追加し、ブレークポイントを入れて関数にヒットするかどうか確認してください。 –
AsyncTaskの目的は、それが「非同期」であることです。それを実行()することはできず、次のコード行の中に結果があることを期待します。 – Egor