每次我进入主屏幕时,Android都会杀死我的应用程序

Posted

技术标签:

【中文标题】每次我进入主屏幕时,Android都会杀死我的应用程序【英文标题】:Android kills my app every time I go to home screen 【发布时间】:2022-01-10 02:21:27 【问题描述】:

我观察到以下行为:

如果我通过Recent 按钮切换到另一个应用程序,然后再切换回我的应用程序,一切正常 如果我按下Home 按钮,然后从应用程序抽屉中打开我的应用程序,我的应用程序将重新启动

android 版本似乎无关紧要。相反,安装类型会有所不同。如果我将 apk 复制到设备上并手动安装,我会得到上述行为。如果我改为使用 Visual Studio 并为 Release/Debug 构建它,它可以毫无问题地工作。应该是同一个apk文件!

Device log 会在应用被杀死时显示以下日志:

12-03 15:29:36.402 10719 10719 I SomeApp: ================ Xamarin: OnSleep()
12-03 15:29:36.410  1350  3999 E WindowManager: win=Windowcf46d1f u0 com.company.someapp/crc64cf5f37a7af23dc58.MainActivity destroySurfaces: appStopped=true win.mWindowRemovalAllowed=false win.mRemoveOnExit=false win.mViewVisibility=8 caller=com.android.server.wm.AppWindowToken.destroySurfaces:1248 com.android.server.wm.AppWindowToken.destroySurfaces:1229 com.android.server.wm.AppWindowToken.notifyAppStopped:1284 com.android.server.wm.ActivityRecord.activityStoppedLocked:2776 com.android.server.wm.ActivityTaskManagerService.activityStopped:2512 android.app.IActivityTaskManager$Stub.onTransact:2280 android.os.Binder.execTransactInternal:1056 
12-03 15:29:36.410  1350  3999 I WindowManager: Destroying surface Surface(name=com.company.someapp/crc64cf5f37a7af23dc58.MainActivity$_10719)/@0xe1a35ad called by com.android.server.wm.WindowStateAnimator.destroySurface:1834 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:733 com.android.server.wm.WindowState.destroySurfaceUnchecked:3642 com.android.server.wm.WindowState.destroySurface:3616 com.android.server.wm.AppWindowToken.destroySurfaces:1248 com.android.server.wm.AppWindowToken.destroySurfaces:1229 com.android.server.wm.AppWindowToken.notifyAppStopped:1284 com.android.server.wm.ActivityRecord.activityStoppedLocked:2776 
12-03 15:29:36.411   820  1120 I Layer   : id=2656 removeFromCurrentState com.company.someapp/crc64cf5f37a7af23dc58.MainActivity$_10719#0 (77)
12-03 15:29:36.413   820  1120 I SurfaceFlinger: id=2656 Removed com.company.someapp/crc64cf5f37a7af23dc58.MainActivity$_10719#0 (77)

AndroidManifest.xml 启动应用程序的设置是否错误?我在我的应用程序中使用android:launchMode="singleTop"。我还检查了电池节省,但行为没有改变。 RAM使用率也可以。这发生在不同的三星设备上。

我怎样才能找出造成这种情况的原因?

【问题讨论】:

这可能有多种原因。你有“不要保留活动”开发选项吗?您确定设备有足够的内存来同时处理两个应用程序吗?这是否发生在发布版本上?不幸的是,我不是 Xamarian 开发者,所以在这方面我帮不上什么忙! 我尝试关闭开发者设置,但行为相同。设备管理器说还剩 1.6 GB,所以这应该不是问题(我的应用程序使用 ~200 MB)。是的,它发生在 Release Build 上。我的猜测是存在 Android 错误配置或类似情况。感谢您的评论! This happens on different Samsung devices.你在其他设备上测试过吗? 【参考方案1】:

这是三星启动器的问题,当您新安装了旁加载的应用程序时。如果您在安装后点击“打开”,则会出现问题。似乎它与Intent 类型和包安装程序有关。该应用程序没有被杀死,而是a new instance is created(请参阅here 或here 了解类似问题并尝试返回按钮!)。这取决于应用程序的打开方式。 here 发布的 Xamarin 解决方案对我不起作用。

因为这是一个小问题,在现实生活中并不经常发生,解决方案是安装后不直接打开应用程序,显示对话框。而是使用应用程序抽屉,然后一切正常。或者使用没有此问题的其他设备制造商,例如 LG。

【讨论】:

以上是关于每次我进入主屏幕时,Android都会杀死我的应用程序的主要内容,如果未能解决你的问题,请参考以下文章

转到主屏幕时 Xcode 与模拟器或设备断开连接

当应用程序被杀死时,无法在推送通知单击时导航到特定屏幕(Flutter android)

系统杀死应用程序后,Android 没有重新打开以前的活动

每次 Retrofit 调用的值更改时,Android 都会通知

每次应用程序来自android的后台时启动第一个屏幕

每次我的应用程序从后台进入前台时,IOS Default.png 都会显示 [重复]