singleInstance Activity在Android 8 Oreo上间歇性地启动了两次

时间:2017-10-28 02:35:18

标签: android android-8.0-oreo

我有一个活动,即launchMode = singleInstance。在Android 8 Oreo上,大约30%的时间我获得了2次单独的Activity活动。它们是不同的Object实例,第一个在第二个启动时没有得到onNewIntent()。

此外,如果我从第二个启动的活动中查询ActivityManager,则不报告第一个。

我确实从后台服务开始活动,因为涉及一些推送消息。

我还记录以确保只发生一个context.startActivity()。

在logcat中,当发生这种情况时,我会看到以下警告

10-27 18:38:49.153 379-3304/? W/ActivityManager: Activity ActivityRecord{a21333f u0 my.package.name/my.package.name.MyActivity t1409} being launched, but already in LRU list

这是Android O特定的,一切都适用于以前的版本。

任何帮助表示赞赏,在这一段时间里我的头撞在墙上已经有一段时间......如果有一个已知的Android Bug,请告诉我!我没找到任何东西

1 个答案:

答案 0 :(得分:0)

最后我无法阻止第二个Activity启动。我必须能够容忍将活动发起两次。

第一个Activity将onCreate()传递给onResume()然后它就消失了。就像真的没有onPause()。

第二个Activity在第一个onResume()之后获取onCreate()。第二个活动经历了正常的生命周期,并且很好。

Android操作系统必须意识到它不应该启动第二个实例,所以很难杀死第一个实例......很奇怪