Android上更新的系统应用程序会怎么样

Android上更新的系统应用程序会怎么样,android,system,startup,Android,System,Startup,我有一个包含系统应用程序的ROM。此系统应用程序是一个家庭启动器,Android标准启动器已被禁用,因此当设备重新启动时,默认情况下会启动此自定义启动器。然后我用一个更新的版本更新那个应用程序。据我所知,由于这是一个系统应用程序,APK的更新版本将存储在/data/app/,而旧版本将保留在/system/app/中(如果不是这样,请纠正我)。问题是,当设备重新启动时,应用程序(较新的一个,我可以通过添加一些特定的日志来检查)启动两次(主活动的onCreate调用两次,后者在前一个被销毁之后)。

我有一个包含系统应用程序的ROM。此系统应用程序是一个家庭启动器,Android标准启动器已被禁用,因此当设备重新启动时,默认情况下会启动此自定义启动器。然后我用一个更新的版本更新那个应用程序。据我所知,由于这是一个系统应用程序,APK的更新版本将存储在/data/app/,而旧版本将保留在/system/app/中(如果不是这样,请纠正我)。问题是,当设备重新启动时,应用程序(较新的一个,我可以通过添加一些特定的日志来检查)启动两次(主活动的onCreate调用两次,后者在前一个被销毁之后)。 在logcat中,在我启动应用程序之前,我发现:

01-01 00:00:13.060 I/PackageManager( 3901): Package mypackage at /system/app/MyApp.apk ignored: updated version 21 better than this 18
01-01 00:00:15.670 I/ActivityManager( 3901): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=mypackage/.MyApp} from pid 0
01-01 00:00:15.670 I/ActivityManager( 3901): start package name is mypackage, class name is mypackage.MyApp, error code is 0
01-01 00:00:15.700 I/ActivityManager( 3901): Start proc mypackage for activity mypackage/.MyApp: pid=4128 uid=1000 gids={41000, 3003, 1028, 1015, 3002, 3001}
...
01-01 00:00:16.170 I/MyApp-Log( 4128): onCreate() called (version 21).
...
01-01 00:00:19.940 D/MyApp-Log( 4128): onDestroy() called
...
01-01 00:00:19.950 I/MyApp-Log( 4128): onCreate() called (version 21).
奇怪的是,在以下情况下不会有问题(这意味着应用程序在重新启动时只启动一次):

  • 不要禁用Android默认启动器(重新启动时,弹出窗口将选择要启动的启动器)。选择我的自定义启动器在这种情况下不会导致任何问题
  • 在安装自定义启动器的更新版本之前
  • 安装更新后,重新启动设备,强制关闭启动器并重新启动
然后我的问题是,当Android启动时,(独特的)定制启动器会发生什么变化,更新的系统应用程序会导致操作系统启动方式的任何差异吗