我收到一个Android错误,即使错误消息非常明显,我也无法弄清楚如何使其正常工作。
错误消息是:
java.lang.IllegalStateException: Must be called from main thread
at android.app.Activity.recreate(Activity.java:4193)
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,发送了一条通知以注销用户(当他的令牌过期时)。
在较旧的Android版本上,我这样做没有问题,但是从SDK 11起,我必须使用recreate()方法。我收到必须从主线程调用它的错误。
我将recreate()语句移至MainActivity类,当我从IntentService调用该方法时,此方法不起作用。我仍然遇到相同的错误。消息传递部分工作正常,只是注销消息的处理导致此错误。
以下是一些摘要:
在GcmIntentService.java中
if (logout!=null) {
VarControl.ma.logout();
}
Run Code Online (Sandbox Code Playgroud)
在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
}
}
Run Code Online (Sandbox Code Playgroud)
我如何从主线程调用recreate(但是必须在接收到意图后处理代码)?