在 HTTP 发布完成后在活动中开始意图



我有一个主要活动。从这个活动中,我调用另一个公共类的方法。

在主活动中,我像这样调用此方法:

// 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 方法,并在响应字符串上输入"成功",然后实现第一个活动的接口,并检查响应是否为"成功"而不是传递意图。

最新更新