gpt4 book ai didi

android - Phonegap Activity 重启失败

转载 作者:行者123 更新时间:2023-11-30 02:50:43 25 4
gpt4 key购买 nike

在某些设备上,重新启动我的 Activity 无法正常工作。 Activity 的旧实例被销毁,但在创建新实例(并在屏幕上短暂闪烁)时,它也最终被销毁。 Activity 重新启动的原因并不重要,但可以说这是因为设备旋转导致配置更改。这被我们的最终用户视为应用程序崩溃,因为窗口“消失”了,所以这显然是一个大问题。

这似乎与基本 PhoneGap Activity 处理 onDestroy 事件的方式有关。我使用的是旧版本的 PhoneGap - PhoneGap 类的一些类名在最新版本中已更改。

事件的顺序是这样的(状态取自 activity lifecycle 图)。我强调了以下发生的几个重要事件:

  1. 已创建 Activity 实例 1
  2. Activity 实例 1 已启动
  3. Activity 实例 1 已恢复
  4. 某种配置更改导致 Activity 重新启动
  5. Activity 实例 1 已暂停
  6. Activity 实例 1 已停止
  7. Activity 实例 1 已销毁(DroidGap 调用 this.appView.loadUrl("about:blank");)
  8. 已创建 Activity 实例 2
  9. Activity 实例 2 开始
  10. Activity 实例 2 已恢复
  11. Activity 实例 1 完成(DroidGap 调用 finish())
  12. Activity 实例 2 已暂停
  13. Activity 实例 2 已停止
  14. Activity 实例 2 已销毁

在上面的第 7 点,基类在 onDestroy 中有这个来清理 WebView:

@Override
/**
* The final call you receive before your activity is destroyed.
*/
public void onDestroy() {
super.onDestroy();

if (this.appView != null) {


// Send destroy event to JavaScript
this.appView.loadUrl("javascript:try{PhoneGap.onDestroy.fire();}catch(e){};");

// Load blank page so that JavaScript onunload is called
this.appView.loadUrl("about:blank");

// Forward to plugins
this.pluginManager.onDestroy();
}
else {
this.endActivity();
}
}

在上面的第 11 点,基类在 onPageFinished 中执行此操作 - 只要 url 完成加载,在本例中为“about:blank”,它就会运行:

public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);

...

// Shutdown if blank loaded
if (url.equals("about:blank")) {
if (this.ctx.callbackServer != null) {
this.ctx.callbackServer.destroy();
}
this.ctx.endActivity();
}
}

endActivity 就是这样:

/**
* End this activity by calling finish for activity
*/
public void endActivity() {
this.activityState = ACTIVITY_EXITING;
this.finish();
}

日志记录显示,当我到达 endActivity 中的 this.finish() 时,它正在为 Activity 实例 1 运行,但 Activity 实例 2 已被销毁。我不明白这是为什么。

最佳答案

对于那些和我有同样问题的人,我发现我遇到的问题在最新的 phonegap ( https://issues.apache.org/jira/browse/CB-2908 ) 中得到了解决

关于android - Phonegap Activity 重启失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24235105/

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