繁体   English   中英

http post完成后开始活动意图

[英]start intent in activity after http post is finish

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

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

// Background Task
new Sync.SyncMYSQL().execute();

如果被调用的方法完成,有没有办法在意图中开始(在主要活动之外)?

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> 比在 Async Activity 上使用这个

AsyncTaskListener listener;

  private void sendResponse(String response) {
      if (listener != null) {
        listener.onResponse(response);
      }
  }

并在 AsyncTask OnPost 和响应字符串上使用 sendResponse 方法输入“成功”,然后实现您的第一个活动的接口,并检查响应是否为“成功”而不是传递意图。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM