[英]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.