我发现我的活动onStop()
方法将被调用,延迟时间不到10秒。我以前从未见过这种行为。
注意: - 活动为
singleTop
,并以Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
标记开头。注意: - 我正在使用Build Tools v23.0.2。
延迟不是之前,方法会立即调用。
答案 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()或在此之前调用任何内容