小编Bar*_*fma的帖子

Android错误:必须从主线程调用recreate()

我收到一个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(但是必须在接收到意图后处理代码)?

java android

6
推荐指数
1
解决办法
4731
查看次数

标签 统计

android ×1

java ×1