问题标签 [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.
android - Android 立即销毁活动(调试标志),现实吗?
在我的 Android 模拟器上,我有“立即销毁活动”的标志。在这种情况下,我的应用程序不会做我想做的事,因为我的 MainActivity 总是必须在 ActivityStack 上。在我的应用程序运行时,ActivityStack 的 Activity 被破坏是真实的情况吗?
android - Android Activity 生命周期问题:何时提交 GlobalPreferences
我有一堆用户偏好,它们保存在我的应用程序的单例对象中。示例模型如下所示 -
所以现在,当用户浏览应用程序时,我创建了一堆活动,通过它们的生命周期,利用这些变量并完成。(例如,在onStart()
方法中,我在呈现活动之前检查用户是否已登录)。
onPause()
我的问题是,Android 文档似乎建议我在我的方法中备份任何与上下文相关的数据。但是onPause()
每次我自己创建一个新活动时也会被调用,备份所有 GlobalVariables 似乎很浪费,只是在下一个活动的onStart()
方法中恢复它们。有没有办法确定整个应用程序是否已经进入后台?如果没有,你什么时候真正保存你所有的 Globals?
谢谢,
泰加。
android - 活动的副作用不再可见?
我编写了一个简单的应用程序,通过文本转语音读取一页文本。它原则上有效,但现在我需要以对最终用户有意义的方式实现 onPause()、onResume() 等。
特别是关于 onPause() 我有两个选择:
- 暂停阅读,意图从左边继续阅读。
- 正常继续,好像活动仍然可见。
第二个选项看起来更明智,因为如果它不是视觉活动,为什么要让视觉障碍打断语音呢?
但是,我不确定在将 onPause() 实现为“什么都不做”功能时是否必须考虑其他系统范围的考虑因素(“副作用”)。
除了在活动不再可见时调用 onPause() 之外,在决定是否停止文本转语音时,是否还有其他事件或副作用需要考虑?
android - 回调“Activity没有启动,它的当前任务已经被拉到最前面”?
我了解如果我的应用程序已经在运行并且我没有进行任何代码更改,LogCat 会显示以下警告:
ActivityManager: 警告: Activity 没有启动,它的当前任务已经被带到了前面
我不明白为什么没有像 onResume() 或 onRestart() 这样的活动生命周期被调用。
在我尝试重新运行之前,该应用程序是不可见的,那么为什么没有调用 onResume() 或 onRestart() 回调呢?
android - 如何在 onResume() 方法中安全地完成一个 Activity?
我的活动的 onResume() 从启动它的 Intent 中读取一些“额外”数据并相应地更新 UI。
我想添加错误处理:如果 Intent 中的数据丢失/损坏,则活动显示 Toast 并完成。
我可以简单地在 onResume() 方法中调用 finish() 吗?考虑到两者都与生命周期有关,我担心一些意想不到的事情。
如果还有其他更好的方法,我也对这些感兴趣,但上面似乎最简单。
谢谢!
android - Android Activity 生命周期:杀死后恢复应用程序 - 设计问题
atm 我试图让我的应用程序围绕“onSaveInstanceState”和“onRestoreInstanceState”工作,但我挖掘得越深,出现的问题就越多。
因此,例如,我刚刚意识到,通过这两个函数恢复一个活动是毫无用处的。因为,如果我按下后退按钮并返回到之前的活动,这个活动不会得到它的“savedInstanceState”包,而是完全重新创建。
有没有办法恢复整个应用程序而不仅仅是一个活动?或者这只是一个奇怪的设计,我什至不应该为恢复一项活动而烦恼?
亲切的问候,水母
编辑:好吧,愚蠢的我......
我的主要活动获得的捆绑包不是空的,而只是在“onRestore ...”中。在“onCreate”中它确实是空的,但这一直都是真的。(例如,无论我是否在杀死后从另一个活动中回来)
所以现在我以另一种方式感到困惑:我之前在另一个活动中对此进行了测试,并且在那里,“onCreate”和“OnRestoreInstanceState”的savedInstanceState包相同!这只是随机的还是主要活动的特殊情况?(也尝试了不同的启动模式,但没有任何影响)。
android - onDestroy() 或 finish() 是否真的杀死了活动?
其实我知道我问的是Android的简单和基本概念。finish()
但是我对这些和onDestroy()
方法有点困惑。这是否会杀死活动并释放与这些活动相关的资源?
我尝试了一个只包含一个活动的简单应用程序。我认为这个概念就像当应用程序运行时,活动将启动。当我们单击后退按钮时,它将完成。我在每个生命周期方法中给出了一些 toast 消息,用于了解内存使用情况。当我单击后退按钮时,它执行onPause()
,onStop()
和onDestroy()
. 我以为这个活动结束了。但是当我再次重新启动应用程序时,它比上次占用了更多的内存。每次我从 Eclipse 运行应用程序或从主屏幕重新启动应用程序时都会发生这种情况。
为什么会这样?我如何才能真正销毁应用程序/活动以释放内存?
我包括我的代码。我只在课堂上给出一条祝酒词。然后内存使用量也在增加。
每次运行应用程序时,分配的大小都会增加,例如:3302744、3442384、3474552
显现:
为什么内存每次都在增加?
android - 如果不能保证调用 onDestroy(),为什么要实现它?
根据 android Activity 生命周期,唯一保证被调用的回调(如果活动离开运行状态,这通常是预期的)是onPause()
.
因此,我必须假设在某些情况下实现它是有意义的onStop()
,onDestroy()
尽管它们并不能真正保证被调用。
我知道onStop()
当一个活动有可能通过 Stopped 状态返回到 Running 状态时应该实施(为什么它会这样做而不是直接返回是另一个问题)。
但是onDestroy()
,当我可以将所有清理/状态保存放入onPause()
时,我不清楚对 的需求。
你能描述一个真正的应用情况(即不类比驾驶汽车等),在这种情况下实现它是有意义的onDestroy()
吗?
java - Android:TabHost Activity 在 kill / OnSaveInstanceState 未调用后表现怪异
我不确定我是不是做错了什么,但是当我偶然发现一个类似的错误时,它也可能是另一个错误。我想知道您是否可以确认这一点,甚至知道解决方案?
好的,所以我有一个包含两个活动 A 和 B 的选项卡主机。
A 是“第一个”选项卡。因此,如果我执行以下操作:
- (A打开)
- 开关 B
- 关闭应用
- 杀死进程
- 再次打开应用
- (B出现)
然后我一切都很好。使用 Log 我看到 A 和 B 都调用了“onRestoreInstanceState”。
现在,我执行以下操作:
- (B已打开,我还没有切换回A)
- 开关 B
- 关闭应用
- 杀死进程
- 再次打开应用
- (B出现)
然后为 B 调用“onRestoreInstanceState”,但不为 A 调用。A 在“onCreate”中是一个空包。
如果我切换到 A,然后再回到 B,就可以了。之后,我可以重复上述行为。
我知道这听起来有点令人困惑,但是以前有人遇到过吗?
亲切的问候,水母
编辑:
我已经为另一个选项卡重复了此操作(保持 A 打开,终止活动,恢复它,再次终止它,再次恢复它)。然后,直到我故意切换选项卡才调用B的“onCreate”;并且无论之前是否恢复,它总是获得 SavedInstance Bundle。所以一切都很好。
编辑2:
除了例外,旋转变化也是如此。以前真的没有人注意到这一点吗?在 2.2 模拟器和 2.3 手机上都可以使用。
android - Android活动标志问题
我将启动器活动标志设置为 singleTop。
当我从通知栏启动活动时(在接收器中使用 FLAG_ACTIVITY_NEW_TASK),会创建新活动并且不使用前一个活动。怎么做才能使堆栈中只有一个活动?
编辑:
在接收器中,似乎正在工作