Android - onStop()将被延迟调用

时间:2016-02-24 06:04:29

标签: android android-activity lag activity-lifecycle

我发现我的活动onStop()方法将被调用,延迟时间不到10秒。我以前从未见过这种行为。

  

注意: - 活动为singleTop,并以Intent.FLAG_ACTIVITY_REORDER_TO_FRONT标记开头。

     

注意: - 我正在使用Build Tools v23.0.2。

延迟不是之前,方法会立即调用。

6 个答案:

答案 0 :(得分:3)

我猜你正在开始另一个活动,并且你希望当前活动接收onStop()回调。根据活动生命周期,onPause()方法在调用之前调用的onStop()。在某些情况下,在onStop()方法之前也会调用onSaveInstance()。另外,当你调用startActivity或startActivityForResult时(再次,我假设这就是为什么你期望调用onStop),根据传递的参数,如果需要计算/获取这些参数/等,它可能在系统执行startActivity之前需要一段时间,这将是Android最早启动生命周期调用的。在这里没有任何代码的情况下,在调用onStop之前无法看到还有什么执行。我建议您检查代码执行时间的时间表,从startActivity开始,调用onStop时,可以记录每次调用的时间戳,从startActivity调用之前的时间戳开始,以开始时的时间戳结束。 onStop,看看时间花在哪里。我还建议通过确保startActivity或startActivityForResult的所有参数先前都设置为它们的值来简化这一点,如果不是这样的话。




答案 1 :(得分:0)

在我的情况下,我在调用onStop()时停止视频播放,但onStop()调用有10秒的延迟。

您可以使用eventBus,RxBus等内容在

中发布事件
Application.ActivityLifecycleCallbacks {

    //post event here.and check the activity's Name in my targetActivity which play my video.
    onActivityStarted()

}

答案 2 :(得分:0)

我遇到了同样的问题。当我使用startActivity()开始一个活动时,在onPause()之后10秒就调用了onStop()。

就我而言,正在启动的活动有一个片段,它有一个WebView。我不明白为什么,但如果我删除了以下行,延迟只有2秒左右。

webView.setScrollbarFadingEnabled(false);

答案 3 :(得分:0)

如果你想解决这个问题,只需转到清单并将noHistory:true添加到它将调用的活动,直接停止不再有10秒延迟。有这个修复它的同样的问题,如果你愿意的话,也可以通过编程方式在标志中传递它。

答案 4 :(得分:0)

我刚刚遇到了这个问题,调试之后,有一种情况是AdView(Admob标语)导致了此问题。

在活动A(放置了一个广告视图)中,我开始活动B。立即从B返回到A,并且在B暂停后立即调用,但所有停止/销毁操作都需要10秒钟才能被调用。移除广告横幅,一切恢复正常。

只需将此案例发布在这里供任何人参考。

答案 5 :(得分:-1)

今天可能是模拟器很慢

但应该立即调用onStop()作为单个命令

没有onPause()或在此之前调用任何内容