-1
我在我的類中有一個名爲String authToken
的全局變量。在這個類中,我有一個如下所示的AsyncTask和設置全局變量的onPostExecute
方法。爲什麼我的全局變量未在AsyncTask後初始化
class AuthToken extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... args) {
MyAccount myAccount = new MyAccount(getApplicationContext());
return myAccount.getAuthToken();
}
@Override
protected void onPostExecute(String fetchedToken) {
authToken = fetchedToken; //assign it to global variable
Log.d("Inside token: ", authToken);
}
}
我這樣稱呼它:
new AuthToken().execute();
Log.d("authToken: ", authToken+""); //print the fetched token
出於某種原因,即使在onPostExecute
日誌消息顯示的authToken但調用後,當我打印的authToken ......不打印輸出:
所以在我的日誌,我看到:
D/Inside token:﹕ 75e7d526-d0eb-4cb2-b294-a57e5dc2e5e4
D/authToken: ]
問題
爲什麼我的全局變量在onPostExecute
之後設置?
我明白了。但是,那麼我該如何做這樣的事情:在我的主要活動中,我想獲取authToken,並在獲取它之後,我想查看它是否已設置(使用'if'條件)。如果是 - 則繼續,如果不是 - 則顯示日誌不活動。 .... – birdy
在你的'onPostExecute'中用你的令牌做任何事情,這是知道你的任務完成的唯一方法。設置一個回調或者其他的東西來表明你的onPostExecute是否有令牌 – tyczj