簡體   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