因此,我是新来的,我需要调用将从单独的文件运行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