2015-08-29 27 views
1

当我有,它注册在AndroidManifest.xml谷歌云消息的接收器:例外广播发送到ComponentInfo

<receiver 
     android:name="com.app.android.push.HSPushReceiver" 
     android:permission="com.google.android.c2dm.permission.SEND" 
     android:enabled="true" 
     android:exported="true"> 
     <intent-filter> 
      <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
      <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 
      <action android:name="com.google.android.c2dm.intent.REGISTER" /> 
      <category android:name="com.app.android" /> 
     </intent-filter> 
    </receiver> 

我可以当应用程序在前台或杀死接收消息。但是,如果我先通知IntentService,然后轻扫主客场的活动,那么如果我发送一个通知,我得到了以下的碰撞:

08-29 15:29:37.782 W/BroadcastQueue( 757): Exception when sending broadcast to ComponentInfo{com.app.android/com.app.android.push.HSPushReceiver} 
08-29 15:29:37.782 W/BroadcastQueue( 757): android.os.DeadObjectException 
08-29 15:29:37.782 W/BroadcastQueue( 757):  at android.os.BinderProxy.transactNative(Native Method) 
08-29 15:29:37.782 W/BroadcastQueue( 757):  at android.os.BinderProxy.transact(Binder.java:496) 
08-29 15:29:37.782 W/BroadcastQueue( 757):  at android.app.ApplicationThreadProxy.scheduleReceiver(ApplicationThreadNative.java:861) 
08-29 15:29:37.782 W/BroadcastQueue( 757):  at com.android.server.am.BroadcastQueue.processCurBroadcastLocked(BroadcastQueue.java:245) 
08-29 15:29:37.782 W/BroadcastQueue( 757):  at com.android.server.am.BroadcastQueue.processNextBroadcast(BroadcastQueue.java:898) 
08-29 15:29:37.782 W/BroadcastQueue( 757):  at com.android.server.am.BroadcastQueue$BroadcastHandler.handleMessage(BroadcastQueue.java:149) 
08-29 15:29:37.782 W/BroadcastQueue( 757):  at android.os.Handler.dispatchMessage(Handler.java:102) 
08-29 15:29:37.782 W/BroadcastQueue( 757):  at android.os.Looper.loop(Looper.java:135) 
08-29 15:29:37.782 W/BroadcastQueue( 757):  at android.os.HandlerThread.run(HandlerThread.java:61) 
08-29 15:29:37.782 W/BroadcastQueue( 757):  at com.android.server.ServiceThread.run(ServiceThread.java:46) 
08-29 15:29:37.782 W/libprocessgroup( 757): failed to open /acct/uid_10377/pid_3948/cgroup.procs: No such file or directory 
08-29 15:29:37.785 W/ActivityManager( 757): Scheduling restart of crashed service com.app.android/.HSNotificationService in 578824ms 

HSNotificationService不知何故坠毁。 PushReceiver以某种方式在活动消失时死亡。如何解决这个问题?

回答

1

here中发现相同的问题。似乎是一个报告为herehere的Android错误。

我在here中使用了解决方法,它适用于我。有人说它有副作用。 side effect

的解决方法是在你的前台服务启动一个虚拟活动

@Override 
public void onTaskRemoved(Intent rootIntent) { 
    Intent intent = new Intent(this, ServiceKeepActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent); 
}