我是Android新手。
我有一个UI线程,用户点击"Login"。一旦他们点击登录,就会创建一个线程(Android的AsyncTask),该线程会访问互联网(HTTPPost)并验证输入。还有一个"进度条"。现在我的问题是,我如何回到活动(UI线程?),所以我可以关闭并启动一个新的活动。
我想到的一个天真的想法是让AsyncTask类成为Activity的子类。这样,在"onPostExecute"方法中,我可以完成活动。
有合适的方法来做这件事吗?
您可以在contructor of asyntask
中传递活动的context
,在onPostExecute
中您可以从那里通过其context
和startActivity
关闭该活动。
public class MyAsyn extends AsyncTask<String, Void, Void>{
public MyAsyn(Context con) {
context = con;
}
}
然后在onPostExecute中执行
i = new Intent(context,AnotherActivity.class);
context.startActivity(i);
((Activity) context).finish();
在异步任务中调用此方法
protected void onPostExecute(String result) {
if(progressDialog!=null&&progressDialog.isShowing()){
progressDialog.dismiss();
}
}
在AsyncTask的postexecute方法中调用startActivity。这将返回到Activity类
是的,你可以把Asynctask作为Activity的内部类,并在onPostExecute
中使用startActivity。
如果它在一个独立的。java文件中,那么你可以将上下文传递给asynctask和startActivity
的构造函数
或者你可以使用interface作为Activity的回调,并在Activity本身中启动Activity。你也可以使用Handler。
我如何从AsyncTask返回布尔值?