即時錯誤信息是相當明顯,我得到一個Android錯誤,我不知道如何使其正常工作。Android錯誤:重新創建()必須從主線程調用
的錯誤信息是:
java.lang.IllegalStateException: Must be called from main thread
at android.app.Activity.recreate(Activity.java:4193)
在我的應用程序,通知被髮送到註銷用戶(當他的標記過期)。
在較舊的Android版本中,我沒有問題,但是從SDK 11開始,我必須使用recreate()方法。我得到它必須從主線程調用的錯誤。
我將recreate()語句移到MainActivity類中,當我從IntentService調用方法時,這不起作用。我仍然得到同樣的錯誤。消息傳遞部分工作得很好,只是處理註銷消息導致了這個錯誤。
下面是一些片段:
內GcmIntentService.java
if (logout!=null) {
VarControl.ma.logout();
}
內MainActivity.java
public void logout() {
deleteToken();
closeWebView();
restartApp();
}
public void restartApp() {
if (Build.VERSION.SDK_INT >= 11) {
this.recreate(); // THE ERROR OCCURS HERE
}
else{
//left out this part because its not relevant
}
}
我如何可以調用從主線程重新創建(但代碼有在收到意圖時處理)?
this.recreate無法解析。但提到VarControl.ma.recreate()做到了! 非常感謝,我正在尋找! – 2014-12-03 10:39:55
是的,我編輯不久之後,如果你寫this.recreate(),'this'是指Runnable。你可以忽略'this',它將使用唯一的上下文,這裏重新創建有意義,你的活動,或指定MainActivity.this.recreate(); – 2014-12-03 10:44:18