내 클래스의 전역 변수가 String authToken
입니다. 이 클래스에서 나는 아래처럼 AsyncTask를 가지고 있고 onPostExecute
메소드는 전역 변수를 설정한다. onPostExecute
의 로그 메시지가 authToken에 표시에도 불구하고, 어떤 이유로AsyncTask 이후에 내 전역 변수가 초기화되지 않습니다.
new AuthToken().execute();
Log.d("authToken: ", authToken+""); //print the fetched token
하지만 authToken에 인쇄 할 때 execute()
에 대한 호출 후 ... 그것은 아무것도 출력하지 :
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);
}
}
나는 다음과 같이 호출 : 내 로그 그래서
나는 참조 :
D/Inside token:﹕ 75e7d526-d0eb-4cb2-b294-a57e5dc2e5e4
D/authToken: ]
질문
onPostExecute
뒤에 내 글로벌 변수가 설정되지 않는 이유는 무엇입니까?
나는 이해합니다. 그러나 다음과 같은 일을 어떻게 할 것인가 : 내 주요 활동에서 authToken을 가져오고 가져온 후에 그것을 설정했는지 여부를보고 싶습니다. 그럴 경우 - 계속 진행하고, 그렇지 않으면 로그 비활성을 표시하십시오. .... – birdy
'onPostExecute'에서 토큰으로 원하는 작업을 수행하십시오. 이는 작업 완료 시점을 알 수있는 유일한 방법입니다. onPostExecute에 토큰이 있는지 여부를 나타내는 콜백 또는 무언가를 설정하십시오. – tyczj