java– 来电期间活动生命周期的奇怪行为:延迟onStop()

java– 来电期间活动生命周期的奇怪行为:延迟onStop(),第1张

概述我有一个没有UI的简单活动.我想在调用期间检查活动的生命周期方法.当呼叫通知到达时,没有任何按预期发生.当我接受电话时,电话的活动就会掩盖我的活动.因此,理想情况下应立即调用onStop().我检查了日志,并且在接受呼叫时只调用onPause().但是在2-3秒之后onStop()也被调用了.活动

我有一个没有UI的简单活动.我想在调用期间检查活动的生命周期方法.

当呼叫通知到达时,没有任何按预期发生.当我接受电话时,电话的活动就会掩盖我的活动.因此,理想情况下应立即调用onStop().我检查了日志,并且在接受呼叫时只调用onPause().但是在2-3秒之后onStop()也被调用了.

活动

public class MainActivity extends AppCompatActivity {    private static final String TAG = "MainActivity";    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_main);    }    @OverrIDe    protected voID onStart() {        super.onStart();        Log.e(TAG, "onStart: ");    }    @OverrIDe    protected voID onStop() {        super.onStop();        Log.e(TAG, "onStop: ");    }    @OverrIDe    protected voID onPause() {        super.onPause();        Log.e(TAG, "onPause: ");    }    @OverrIDe    protected voID onResume() {        super.onResume();        Log.e(TAG, "onResume: ");    }}

表现

   <activity androID:name=".MainActivity">        <intent-filter>            <action androID:name="androID.intent.action.MAIN" />            <category androID:name="androID.intent.category.LAUNCHER" />        </intent-filter>    </activity>

日志

05-17 22:10:25.025 E/MainActivity: onStart: 05-17 22:10:25.054 E/MainActivity: onResume: When call has been accepted:05-17 22:10:34.405 E/MainActivity: onPause: After 2-4 seconds:05-17 22:10:38.144 E/MainActivity: onStop: 

根据onStop()的documentation:

Called when you are no longer visible to the user. You will next receive either onRestart(), onDestroy(), or nothing, depending on later user activity.

在这里,另一项活动是覆盖我的活动并隐藏它.因此,应在onPause()之后立即调用onStop().

我在Moto G4设备和Nexus 5仿真器上测试过它.两者都表现出相同的行为.
延迟onStop()调用的原因是什么?

任何人都可以解释内部细节吗?

截图

解决方法:

基于documentation:

After receiving onPause() call you will usually receive a following call to
onStop() (after the next activity has been resumed and displayed),
however in some cases there will be a direct call back to onResume()
without going through the stopped state.

尽管onStop()的文档有点令人费解,但是当Activity不再可见时它声称会调用它,但在调用之前会有一点延迟(它取决于显示的下一个活动).

如果您接到电话,呼叫进入前台后会出现微不足道的延迟.我也在我的个人电话上发现了这种延迟.此延迟将导致onStop()调用延迟.

总结

以上是内存溢出为你收集整理的java – 来电期间活动生命周期的奇怪行为:延迟onStop()全部内容,希望文章能够帮你解决java – 来电期间活动生命周期的奇怪行为:延迟onStop()所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1117448.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存