Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 活动生命周期的可靠性(onPause到onDestory)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
经过多年信任生命周期,我做了一点挖掘.
现在我不觉得好笑.

我知道并阅读了很多关于onStop不能保证被调用等等.

我创建了一个带有2个Activites和一个自定义Application类的简单应用程序.我在每个回调中放了一个Log.d(),我可以在一个带有4.1的Galaxy S2上找到并玩.
Activity A在start和onResume上启动它启动Activity B. Activity B有一个Button,它创建一个Nullpointer但是它什么都不做.

现在担心/混淆我的事情:

>如果我在buttonclick上创建一个nullpointer,应用程序崩溃并且两个活动都没有回调
>如果我按下电源键并关闭屏幕,如果活动的显示模式(纵向或横向)与设备的原始方向不匹配,活动将重新启动.我知道这个以及如何覆盖它但是如果它破坏并重新启动我的活动它调用onPause并且isFinishing()返回false但活动正在完成并重新启动.
>如果上面没有发生,即使应用程序不再可见,也只会调用onPause
>在A中启动另一个活动调用onPause,然后在onResume上创建B,然后调用A的onStop.现在我在.App类中跟踪我的活动,如果我在onPause中取消注册A并在onResume中注册B,则会出现分裂没有注册活动的毫秒.如果我想在没有任何活动时关闭某些服务,它会一直发生.但是如果我在onStop中取消注册它(因此它们会重叠),当用户点击电源按钮并且服务(或线程或其他)继续运行并耗尽电池电量时,它将永远不会被注册.

我正在使用android已经有一段时间了,我正试图实现一个相当复杂或让我们说防弹设计.但几乎不可能跟踪我的活动发生了什么.

>必须通过Intent.ACTION_SCREEN_OFF检测掉电,但是当它已经关闭会发生这种情况.之前唯一的事就是onPause.
> homebutton … onUserInteraction和pause / stop的某种组合

很难简单地确定我的APP(不仅仅是一个活动)何时不再被使用并放入后台以及何时只是在活动之间转换或何时被系统关闭.因为onTerminate()仅在模拟器中使用,因为.App类没有终止回调,所以文档说.

也许我只是没有看到森林穿过树林……
帮助将不胜感激!

解决方法

Android生命周期可能非常令人困惑,到目前为止,我发现只有一种方法可以让您对周围发生的事情有一个正确的认识.

你设计你的应用程序的方式是你总是假设你可以在任何时刻被杀死而没有调用onDestroy()这样的回调,因为无法保证它们会被调用.

检查活动是否进入后台的简单方法是因为另一个活动即将出现在前面是使用一个简单的标志:

Boolean movingInApp = false;
....
movingInApp = true;
Intent intent...
.....
public void onPause() {
    if(movingInApp) {
        //Called because we're moving to another Activity in our own app
    }
}

public void onResume() {
    movingInApp = false;

}

通过在启动任何意图等之前将movingInApp的值设置为true,您可以跟踪调用onPause()的原因.请记住稍后在onResume()方法中将其再次设置为false.如果系统让您的应用程序转到后台,这将是错误的,并且您知道您的应用程序已由其他人移动到后台,而不是您.

至于发生异常时不会调用任何内容,只要有未捕获的异常,Android就会终止整个App进程.您的应用程序只是停止运行,就像您强行退出计算机上的程序一样.系统杀死是完全没有任何警告.根本不再执行任何代码.

大佬总结

以上是大佬教程为你收集整理的android – 活动生命周期的可靠性(onPause到onDestory)全部内容,希望文章能够帮你解决android – 活动生命周期的可靠性(onPause到onDestory)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。