因此,我是新來的,我需要調用將從單獨的文件運行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