我有一个活动,即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,请告诉我!我没找到任何东西
答案 0 :(得分:0)
最后我无法阻止第二个Activity启动。我必须能够容忍将活动发起两次。
第一个Activity将onCreate()传递给onResume()然后它就消失了。就像真的没有onPause()。
第二个Activity在第一个onResume()之后获取onCreate()。第二个活动经历了正常的生命周期,并且很好。
Android操作系统必须意识到它不应该启动第二个实例,所以很难杀死第一个实例......很奇怪