Android 每次我进入主屏幕时都会终止我的应用程序
Android kills my app every time I go to home screen
我观察到以下行为:
- 如果我通过
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=Window{cf46d1f 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 使用也可以。这发生在不同的三星设备上。
如何找出原因?
当您刚安装旁加载应用程序时,这是三星启动器的问题。如果您在安装后点击“打开”,就会出现问题。它似乎与 Intent
类型和软件包安装程序有关。该应用程序没有被杀死,而是 a new instance is created (see here or here for similar problems and try the back button!). And it depends on how an app is opened. The Xamarin solution posted here 对我不起作用。
因为是比较小的问题,在现实生活中不会经常发生,所以解决方法是安装后不要直接打开app,出现如图的对话框。而是使用应用程序抽屉,然后一切正常。或使用其他设备制造商,如 LG,没有此问题。
我观察到以下行为:
- 如果我通过
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=Window{cf46d1f 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 使用也可以。这发生在不同的三星设备上。
如何找出原因?
当您刚安装旁加载应用程序时,这是三星启动器的问题。如果您在安装后点击“打开”,就会出现问题。它似乎与 Intent
类型和软件包安装程序有关。该应用程序没有被杀死,而是 a new instance is created (see here or here for similar problems and try the back button!). And it depends on how an app is opened. The Xamarin solution posted here 对我不起作用。
因为是比较小的问题,在现实生活中不会经常发生,所以解决方法是安装后不要直接打开app,出现如图的对话框。而是使用应用程序抽屉,然后一切正常。或使用其他设备制造商,如 LG,没有此问题。