我的主要活动使用CommonsWare提供的方便的WakefulIntentService来安排一个警报,轮询我的服务器以查找数据的变化。当警报响起时,我呼叫服务:
Intent backgroundIntent = new Intent(context, PollService.class);
WakefulIntentService.sendWakefulWork(context, backgroundIntent);
该服务读取一条服务器数据,'令牌'并将其与“老牌”#39;存储在首选项中的值。如果令牌不匹配,我会发送一个有未决意图的通知来开始活动。
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
String oldToken = settings.getString("oldToken", "empty");
Log.d(TAG, "Old token: " + oldToken);
if (!token.equals(oldToken)){
...
这种方法可以使用一段时间,但是经过几个小时的随机播放后,#old;老`开始回归'空?好像该服务无法再访问共享首选项。
然后我注意到这出现在logcat中:
03-12 08:32:51.325 506-7595/? W/BroadcastQueue﹕ Unable to launch app com.xxx.xxx/10086 for broadcast Intent { flg=0x14 cmp=com.xxx.xxx/com.commonsware.cwac.wakeful.AlarmReceiver (has extras) }: process is bad
我一直试图考虑这两个事件是否相关。它们似乎确实同时发生。
为什么我得到"过程很糟糕"错误?为什么我的服务失去了与共享偏好的连接?
感谢您的考虑。
答案 0 :(得分:0)
我遇到此process is bad
错误,我必须保持导出的FCM服务。
添加:
android:exported="true"
或完全删除导出。
我的服务现在看起来像这样:
<service
android:name=".service.MyFirebaseMessagingService"
android:exported="true"
>
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service
android:name=".service.MyFirebaseInstanceIdService"
android:exported="true"
>
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>