簡體   English   中英

ASyncTask內部的變量值丟失

[英]Lost variable value inside ASyncTask

我正在嘗試檢索GCM注冊ID。 為此,我正在使用ASyncTask。 但是,該變量正在接收注冊ID(我正在記錄它,並且可以在LogCat上看到它),但是當我需要將此變量放入另一個函數中時,它顯示出空值。

這是代碼:

private void registrarRegId() {
    regId = GCMRegistrar.getRegistrationId(getApplicationContext());

    new AsyncTask<Void, Void, Void>() {
        @Override
        protected Void doInBackground(Void... params) {
            if (regId.equals("")) {
                GoogleCloudMessaging gcm = GoogleCloudMessaging
                        .getInstance(getApplicationContext());
                try {
                    regId = gcm.register(SENDER_ID);
                    Log.d("REGID", regId);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }


            }
            return null;
        }

    }.execute(null, null, null);

}

聽起來您調用registrarRegId()函數為regId分配了一個值(我認為是全局的),然后在函數call(?)之后立即嘗試使用此變量,如果是這樣,問題可能出在在AsyncTask創建的后台線程運行完成之前訪問變量。 嘗試使用onPostExecute()方法來確保您不會訪問doInBackground設置的任何變量,直到您確定后台線程已完成。 希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM