因此,这不是服务与活动生命周期相关联的典型问题。这个特殊的错误似乎与Android 5有关。我特别使用运行5.0.1的Nexus 5。
发生的事情是,经过一系列事件然后按回家导致Android杀死我的MediaService。
让我解释如何重现此错误以及我的测试应用程序中的一些代码。有两个课程涉及MainActivity和MediaService。
onStart()
我们将绑定到MediaService,如下所示。private void doBindService () { // no need to bind if already bound if (!mIsServiceBound) { Log.v(TAG, "doBindService()"); Intent intent = new Intent(this, MediaService.class); //intent.setComponent(mServiceName); // start Service startService(intent); // connect to service if (14 > android.os.Build.VERSION.SDK_INT) { mIsServiceBound = bindService(intent, MainActivity.this, Context.BIND_AUTO_CREATE); } else { // Context.BIND_IMPORTANT = 0x40 mIsServiceBound = bindService(intent, MainActivity.this, Context.BIND_AUTO_CREATE | 0x40); } } }
public PendingIntent getPendingIntent (Context context) { Intent showPlayer = new Intent(context, MainActivity.class); showPlayer.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); return PendingIntent.getActivity( context, 0, showPlayer, PendingIntent.FLAG_CANCEL_CURRENT); }
onStop()
,我们调用unbindService()。紧接着,MediaService被杀了!这是我在日志中看到的内容。I / ActivityManager(790):杀戮 12049:com.test.MediaService:RemoteMediaService / u0a91(adj 0):删除 任务
该服务正在另一个进程上运行。
<service android:name=".MediaService" android:process=":RemoteMediaService" />