我在 Android 应用程序中工作,我想从我的 UI 主线程调用 AsyncTask。为此,我想从一个线程调用我的 AsyncTask。
这是我从主 UI 线程调用的方法。这工作正常
CommonAysnk mobjCommonAysnk = new CommonAysnk(this, 1);
mobjCommonAysnk.execute();
CommonAysnk 是我的 AsyncTask 类。我想将我的 Activity 和一个整数参数传递给 AsyncTask 构造函数。我如何从线程中调用它,如下所示。
Thread t = new Thread() {
public void run() {
try {
CommonAysnk mobjCommonAysnk = new CommonAysnk(this, 1);
mobjCommonAysnk.execute();
} catch (Exception ex) {
}}};
t.start();
当我尝试从线程调用它时,我无法正确传递 Activity 参数。
这是 CommonAysnk 类。请看一下
public class CommonAysnk extends AsyncTask<URL, Integer, String> {
private Common mobjCommon = null;
private Activity mobjActivity = null;
private int mcallIntentcond = 0;
private ProgressDialog mProcessDialog = null;
public CommonAysnk(Activity activity, int condition) {
mobjActivity = activity;
mcallIntentcond = condition;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
mProcessDialog.dismiss();
}
@Override
protected void onPreExecute() {
super.onPreExecute();
mobjCommon = new Common();
mProcessDialog = mobjCommon.showProgressDialog(mobjActivity, "",
"Loading...", false);
}
@Override
protected String doInBackground(URL... params) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
}
switch (mcallIntentcond) {
case 1:
Intent i=new Intent(mobjActivity, Home.class);
mobjActivity.startActivity(i);
mobjActivity.finish();
break;
}
return null;
}
}
我们如何解决这个问题。谢谢
最佳答案
没有理由在这样的线程中运行 AsyncTask,您可以在 UI 线程上调用它。 AsyncTask 为您管理线程。
您在 doInBackground 方法中输入的代码会自动在后台线程中运行,您的 AsyncTask 上的其他方法在 UI 线程中运行,您可以直接与 UI 安全地交互。
关于android - 在线程内调用 AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12705570/