问题标签 [android-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 投票
2 回答
158 浏览

android-lifecycle - 为什么 Activity API 生命周期方法使用 RuntimeException 来强制子类调用超级方法?

Android 要求所有 Activity 子类从其生命周期方法中调用超级方法。如果未调用 super 方法,则会引发异常。为什么Android会使用RuntimeException机制来强制调用super方法。为什么它不使用“模板”设计模式,以便超级方法在子方法之前自动执行。例如 onDestroy() 可以按如下方式处理:-

0 投票
3 回答
313 浏览

android - 多少 Android 生命周期处理太多了?

可以理解这个问题有点主观,但我相信有一个具体的答案。

我有一个非常小的活动,它只是在 ListActivity 中向用户显示一些数据。我使用的数据来自应用程序的 SQLite 数据库,我发现自己正在这样做

这只是代码在很大程度上是不必要的吗?我想处理生命周期,以便在 MainActivity 不在顶部时使用最少的资源,但同时,整个活动可以在onCreate().

0 投票
2 回答
1142 浏览

android - Android - 从横向到纵向的双重生命周期序列

我正在监视Activity生命周期以了解更多信息,因此我Log.d()在几乎每个周期的方法中都进行了调用。

我特别看这个序列:

查看活动生命周期

使用 Ctrl-F11 将 2.2 Froyo 模拟器从纵向切换到横向我可以看到从 [A] 到 [B] 的一轮

令我感到奇怪的是,从横向切换回纵向我可以看到从 [A] 到 [B] 的两轮

这给我带来了很多保存/恢复活动状态的问题。

怎么会这样?为什么会这样?

编辑:使用 2.3.3 Gingerbread 模拟器,序列只运行一次。但是 2.3.3 模拟器有一个已知的错误,它会阻止它正确旋转!

0 投票
1 回答
4174 浏览

android - onDestroy() - 设置或不设置实例变量为空?

在活动的 onDestroy() 回调中专门将实例变量设置为 null 是个好主意吗?像这样的东西:

如果我从 Java SE 中没记错的话,任何被隔离且未连接到正在运行的程序的引用都可以被垃圾收集。那么这是否使上述内容变得多余?

另一方面,移动设备的生命周期不同,以上是最佳实践吗?

我知道这样做不会有什么坏处,但有时有许多类变量(对单个 UI 元素的引用等),所以我真的很想知道我自己的理解,到底发生了什么。

提前致谢!

0 投票
1 回答
1895 浏览

android - 在Android中单击后退按钮时的onSaveInstanceState

我有一个在 Android 应用程序中运行时调用的活动。当用户单击后退按钮时,Activity 被销毁,我重写了onSaveInstanceState保存方法以outState在第二次检索,但onSaveInstanceState在用户单击后退按钮时从未调用过。

你知道为什么会这样吗?

0 投票
1 回答
352 浏览

android - 此活动 - 服务消息传递模式是否会导致内存泄漏?

我有一个 WorkerService和一堆活动。每个Activity人都有一个Handler。Activites 可以通过发送IntentsServicewithstartService方法来启动作业。这些作业进入队列,并按顺序处理。

为了报告已完成作业的结果,我提供了Handler包含在 Messenger 对象中的正确 Activity,并带有Intent描述作业的 。通过这个Service发回一些用于调用的消息Activity。这工作得很好。

但是提供的Handlers似乎保留在内存中,即使在相应的Activites被销毁之后,继续处理完成消息。

  • 怎么会这样?处理程序不应该与Activity它们所属的部分一起被销毁吗?
  • 这会导致内存泄漏吗?
0 投票
1 回答
1156 浏览

android - 使用 IntentService 进行位置监听,但在 onHandleIntent 之后立即调用 onDestroy

我正在使用 IntentService 来监听 GPS 位置更新,以便在用户离开活动时运行。IS 在消息中将位置发送给活动的处理程序。

问题是,当用户点击“停止跟踪”按钮时,状态栏通知说“正在跟踪...”仍然存在,因为它是在 IntentService 中创建的。因此我重写了 onDestory() 所以我可以调用:

但问题是,当我实现onDestroy() 时,它是在onHandleIntent 之后立即调用的。如果我删除我的覆盖 onDestroy() 代码,那么它不会立即被调用并且运行良好,将位置发送回活动以显示在屏幕上。

任何想法为什么 onDestroy() 如果我实现它会立即被调用,但如果我不实现它就不会?

我在这里很困惑。

谢谢大家,

无限化

0 投票
8 回答
14122 浏览

android - 强制 Android 在方向更改时不重绘活动

我一直在努力解决这个问题。
尽管我在 Orientation Change 上阅读了很多内容,但 Android 会杀死一个活动并将其作为一个新的活动启动,而处理此问题的唯一方法是将所有内容保存在里面onSaveInstanceState()并尝试在里面恢复它onCreate()

但是我的活动在不同的时间做了很多不同类型的网络活动,如果在执行网络活动时方向发生了变化,我将不得不处理很多不同和复杂的场景。

有没有什么简单的方法可以让Android在改变方向时根本不需要重绘这个活动,以便它自动保存所有数据并重新使用它?

我想知道有没有这样的事情。

0 投票
1 回答
9423 浏览

android - Android生命周期-ActivityManager杀死进程->从后台返回时出现异常

我有一个非常无聊的问题。当我的应用程序进入后台时,有时该进程会被终止,如 LogCat 所示:

然后,当我尝试通过任务切换器(长按主页)返回应用程序时,它会尝试返回上一个打开的活动......然后崩溃。

为什么它不从头开始打开,在整个应用程序关闭时打开 Main?

ERROR/InputDispatcher 错误并不总是出现。

更新:

问题是......应用程序已恢复,但其中下载的对象(作为哈希图)不是......所以当我访问它们时......我有“问题”......

更新 2:

如果应用程序包含我需要的数据或者它是否为空(在这种情况下它重新启动应用程序),我已经通过验证 BaseActivity 上的 onCreate (由其他所有扩展)来解决问题。

有没有更优雅的解决方案,或者至少有一种方法可以告诉设备如果应用程序被终止,我希望重新启动应用程序?

此链接有助于理解问题......并且知道如何存储来自应用程序的数据没有明确的答案:如何在 Android 中声明全局变量?

更新 3:

所以我专门问了一个关于如何正确保存应用程序数据的问题。这可能会帮助那些有同样问题的人:Android: Best way to save data stored in Application Singleton Class

0 投票
2 回答
8180 浏览

android - Android 片段与复合控件

为什么要使用 Android 3.0 片段而不是复合控件?可以一次创建一个 View 继承者或复合控件,然后在任何地方使用它。

我已阅读http://android-developers.blogspot.com/2011/02/android-30-fragments-api.html但没有找到答案。