即时错误信息是相当明显,我得到一个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