gpt4 book ai didi

java - 安卓错误 : recreate() must be called from main thread

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:54:34 25 4
gpt4 key购买 nike

我遇到了 Android 错误,尽管错误消息非常明显,但我不知道如何让它正常工作。

错误信息是:

 java.lang.IllegalStateException: Must be called from main thread
at android.app.Activity.recreate(Activity.java:4193)

在我的应用程序中,发送通知以注销用户(当他的 token 过期时)。

在较旧的 Android 版本上,我这样做没有问题,但是从 SDK 11 及更高版本开始,我必须使用 recreate() 方法。我收到必须从主线程调用它的错误。

我将 recreate() 语句移动到 MainActivity 类,当我从 IntentService 调用该方法时,这不起作用。我仍然遇到同样的错误。消息传递部分工作正常,只是处理注销消息导致此错误。

以下是一些 fragment :

在 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
}
}

我如何从主线程调用重新创建(但必须在接收到 Intent 时处理代码)??

最佳答案

如果你想在主线程上运行 sthg 你仍然可以这样做:

public void restartApp() {
if (Build.VERSION.SDK_INT >= 11) {
runOnUiThread(new Runnable() {
@Override
public void run() {
recreate();
}
});
}
else{
//left out this part because its not relevant
}
}

关于java - 安卓错误 : recreate() must be called from main thread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27268979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com