我有一个主要活动。从这个活动中,我调用另一个公共类的方法。
在主活动中,我像这样调用此方法:
// Background Task
new Sync.SyncMYSQL().execute();
如果被调用的方法为 finish,有没有办法在意图中开始(从主活动之外)开始?
public class Sync {
static class SyncMYSQL extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params) {
// DO SOMETHING
return null;
}
protected void onPostExecute(String result) {
// DO SOMETHING
}
}
}
是的,
在asyncTask类中,您可以重写onPostExecute方法并在那里编写活动启动代码
因为它在doInBackground方法:)之后执行
在您的帖子中执行预初始化所有可能的意图并使用开关处理,否则
样本
public class Sync {
static class SyncMYSQL extends AsyncTask<String, String, String> {
int type;
public SyncMYSQL(int intentType){
type=intentType;
}
@Override
protected String doInBackground(String... params) {
// DO SOMETHING
return null;
}
protected void onPostExecute(String result) {
switch(type){
case 0: Intent in=new Intent(context,destinationActivity1);
startActivity(in);
break;
case 1: Intent in=new Intent(context,destinationActivity2);
startActivity(in);
break;
}
}
}
}
像这样调用此异步任务
new Sync.SyncMYSQL(<integer_value>).execute();
使用接口来执行此任务。1> 创建接口
public interface AsyncTaskListener {
public void onHttpResponse(String callResponse);
public void onError(String error, int pageId);
}
2> 比在异步活动上使用此
AsyncTaskListener listener;
private void sendResponse(String response) {
if (listener != null) {
listener.onResponse(response);
}
}
并在 AsyncTask OnPost 上使用 sendResponse 方法,并在响应字符串上输入"成功",然后实现第一个活动的接口,并检查响应是否为"成功"而不是传递意图。