我正在开发一款Android应用程序,想要从UI主线程中调用AsyncTask。为此,我需要从一个线程中调用AsyncTask。
这是我从主UI线程调用的方法,它可以正常工作。
CommonAysnk mobjCommonAysnk = new CommonAysnk(this, 1);
mobjCommonAysnk.execute();
CommonAsync是我的AsyncTask类。我想从下面的方法中的线程调用它时,将我的活动和一个整数参数传递给AsyncTask构造函数。该怎么做呢?
CommonAsync是我的AsyncTask类。我想通过下面的方法,在线程中调用它并传入我的活动和一个整型参数到AsyncTask构造函数中。应该如何实现? Thread t = new Thread() {
public void run() {
try {
CommonAysnk mobjCommonAysnk = new CommonAysnk(this, 1);
mobjCommonAysnk.execute();
} catch (Exception ex) {
}}};
t.start();
当我尝试从线程中调用它时,无法正确传递活动参数。
这是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;
}
}
我们该怎样解决这个问题。谢谢。
doInBackground()
中启动活动..为什么不在onPostExecute()
中进行呢?同时,你在启动线程后又在一个线程中调用asycTask..你真的需要重新考虑你正在做的事情! - ColdFire