我有一个方法public void writeEntry(Activity ctx,Entry entry),它获取一些数据并且必须调用本机方法,这需要更长的时间才能完成.
所以我创建了一个处理ProgressDialog和本机方法的AsyncTask.它在自己的Activity中运行很好来测试它,在Activity中我使用了一个回调接口等等.
在我的情况下,我有上述方法,并且必须执行AsyncTask.执行不能在该方法中,因为它不会停止进一步执行.
在继续执行之前,我需要本机方法的结果.
是否有可能等待AsyncTask直到它完成?方法wait()不是一个选项,因为UI线程也会等待,因此ProgressDialog的意义将会丢失.
我可以使用给定参数中的方法runOnUiThread(),还是启动自己的Activity的唯一解决方案?
解决方法:
所以我会尽力解释
在AsyncTask中启动繁重的进程,但是在完成AsyncTask之后要执行的任何代码都将它放在一个单独的公共方法中.现在,一旦你完成了在onPostExecute()中单独创建的方法的重过程调用.
所以psuuedo代码看起来像这样,
class main extends Activity {
class Something extends AsyncTask<String, Integer, String> {
protected void onPreExecute() {
// Start your progress bar...
}
protected String doInBackground(String... params) {
// Do your heavy stuff...
return null;
}
protected void onPostExecute(String result) {
// close your progress dialog and than call method which has
// code you are wishing to execute after AsyncTask.
}
}
}
希望这会有所帮助,
祝好运!