问题标签 [activity-lifecycle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
15013 浏览

android-intent - 防止在关闭屏幕时重新创建 Android 活动

如何防止在关闭屏幕时重新创建活动?

我做什么

  1. 启动 Bejewels 并转到珠宝屏幕。
  2. 短按电源按钮。屏幕已关闭,但设备未关闭。
  3. 再次按下电源按钮。

我所看到的

与关闭屏幕前相同的屏幕。

对于我的应用程序(一个微不足道的应用程序,只是一个带有单个 WebView 的 Web 应用程序),场景如下:

我做什么

  1. 启动我的应用程序。Activity onCreate() 方法将 URL 加载到 WebView 中。
  2. 短按电源按钮。屏幕已关闭,但设备未关闭。
  3. 再次按下电源按钮。

我所看到的

WebView 正在重新加载页面。

我所期望的

就像在 Bejewels 案例中一样,我希望看到相同的屏幕,对于我的应用程序来说,它是处于之前状态的页面:脚本正在运行,表单字段已填充等。

调试表明,我错了(在上一个问题中)并且 onDestroy() 和 onCreate() 在屏幕刚刚打开时被一个接一个地调用。而且由于我仍然听到由脚本播放的音乐,因此当屏幕关闭时,看起来活动和 WebView 确实存在,直到我再次按下电源按钮。

我试过了。

  1. android:alwaysRetainTaskState="true" 相同的行为。
  2. 阅读有关意图(无济于事,我只是不明白,它们如何应用于我的情况)。
  3. 使用 PhoneGap。它的行为不同:只是在按下电源按钮时杀死整个应用程序。这更好,但不是最好的。
0 投票
2 回答
3588 浏览

android - 如何防止Android在调用相机意图后重启应用程序?

在低内存设备上调用相机意图后我遇到了问题。当应收到活动结果时,Android 会重新启动整个应用程序。

有人遇到过同样的问题吗?有什么解决办法吗?

0 投票
2 回答
1123 浏览

android - 保存android活动状态

我尝试创建 LUDO 游戏,当用户停止游戏时,我想保存游戏状态(活动状态)。

我知道我需要在方法 OnPause() 中保存状态,但是我需要保存很多变量,并且所有变量都会及时变化,所以我不确定我是否可以以这种方式保存状态。

那么我可以保存整个 Activity 和 OnResume() 方法来恢复它并继续游戏吗?

谢谢。

0 投票
2 回答
334 浏览

android - 在模拟器中重新启动活动时未调用 OnPause()

我选择将OnPause()方法中的持久应用程序状态保存到我的数据库中,因为根据活动生命周期的文档,OnPause()可以保证在应用程序被杀死之前被调用。

现在我使用 eclipse 和 avd 模拟器(api 级别 8)面临以下行为:
1. 我通过 eclipse 启动我的应用程序 - Instance1
2. 我再次通过 eclipse 启动我的应用程序 - Instance2

现在 Instance1 在没有调用的情况下被终止OnPause()

有人可以解释一下为什么OnPause()不被调用吗?我认为它保证总是被调用。如果不是这种情况,可能是因为 eclipse 终止 Instance1 进程的方式,那么我想知道是否可以更改它。非常感谢。

0 投票
13 回答
248031 浏览

android - Activity.finish() 方法到底在做什么?

我正在开发android应用程序一段时间,并关注了很多关于活动生命周期和应用程序生命周期的帖子。

我知道Activity.finish()在某处调用方法Activity.onDestroy(),并且还从堆栈中删除了活动,我猜它以某种方式指向操作系统和垃圾收集器,他可以“做他的伎俩”并在找到合适的时候释放内存所以....

我来到这个帖子 - 退出应用程序是否令人不悦?并阅读马克墨菲的答案。

这让我对这个方法到底做了什么感到有点困惑finish()

有没有机会我会打电话finish()onDestroy()不会被打电话?

0 投票
2 回答
3297 浏览

android - 从相机应用程序返回时重新创建活动

此问题仅在两款较旧的三星 Galaxy 机型上出现,但重现性非常好。

我有一个简单的应用程序,它显示通过设备的相机应用程序拍摄的照片。它有一个按钮来启动该应用程序,并在 AsyncTask 中处理结果以将其下采样到 ImageView 中。

从相机应用程序返回时,活动的流程出现问题:由于某种原因,活动被创建,处理导致 AsyncTask 中的 AsyncTaskonActivityResult()被销毁,只是立即重新创建。一旦 AsyncTask 完成,它就会持有对不正确/旧活动的引用。

将一些调试语句放入各种生命周期回调中会发现这种奇怪的行为:

调用的活动实例onActivityResult()(注意上面的哈希码)不再匹配正在显示的最终实例。当我的位图加载onBitmapLoaded()完成时,它因此也包含不正确的实例。

为什么会发生这种情况,我怎样才能防止(不必要地)重新创建活动?

0 投票
2 回答
443 浏览

android - 重新启动时重新验证 - Android

每次调用 onRestart 时我都需要重新验证用户凭据(通常这意味着用户已锁定和解锁屏幕或将其置于后台然后返回)。

所以我这样做了:

这有效,显示了 LoginActivity,但是当它完成时,再次调用第一个 Activity 的 onRestart 并再次打开 LoginActivity。

我该如何处理?

0 投票
1 回答
286 浏览

android - 您是否需要在 Android 中只向 SystemService 添加一次活动侦听器?还是在 resume() 上?

例如,在监听 SearchDialog 关闭的活动中,您在 onCreate() 中注册监听器:

我的问题是这将保持一个监听器还是我需要在说 resume() 中再次将它设置为监听器?或一个注册总是注册。我没有保留对 SearchManager 的本地引用。

还有我们为什么要这样做,是否有任何理由检查经理是否像这样为空,或者可以安全地假设您永远不会让空经理回来?

0 投票
2 回答
2647 浏览

android - android的主页按钮到底在做什么?

我所知道的是当前活动进入 onPause() 模式,并且主屏幕活动被带到前面。

我的困惑始于您可以从最近的任务菜单重新打开应用程序的情况。那么当我从最近的任务管理器中打开应用程序时到底发生了什么?

按下主页按钮时处于前台的活动是否仍在堆栈中的某个位置?

是否同时存在多个活动堆栈?

0 投票
2 回答
1120 浏览

android - 可以仅使用 onPause 杀死一个活动吗?

这是我从一本书中读到的:

活动可以在 onPause() 之后静默销毁。我们绝不应该假设调用了 onStop() 或 onDestroy()。

但是根据文档,Pause 是指部分可见,如果不调用 onStop 或 onDestory,是否可以杀死部分可见的活动?