从包中发布的错误通知无法展开RemoteViews

我有个问题。 有时候我的服务被这个logcat强行closures了:

03-26 20:44:44.849: E/AndroidRuntime(12080): FATAL EXCEPTION: main 03-26 20:44:44.849: E/AndroidRuntime(12080): android.app.RemoteServiceException: Bad notification posted from package by.flipdev.vkspy: Couldn't expand RemoteViews for: StatusBarNotification(pkg=by.flipdev.vkspy id=1 tag=null score=0 notn=Notification(pri=0 contentView=by.flipdev.vkspy/0x1090071 vibrate=null sound=null defaults=0x0 flags=0x2 kind=[null])) 03-26 20:44:44.849: E/AndroidRuntime(12080): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1374) 03-26 20:44:44.849: E/AndroidRuntime(12080): at android.os.Handler.dispatchMessage(Handler.java:99) 03-26 20:44:44.849: E/AndroidRuntime(12080): at android.os.Looper.loop(Looper.java:137) 03-26 20:44:44.849: E/AndroidRuntime(12080): at android.app.ActivityThread.main(ActivityThread.java:4931) 03-26 20:44:44.849: E/AndroidRuntime(12080): at java.lang.reflect.Method.invokeNative(Native Method) 03-26 20:44:44.849: E/AndroidRuntime(12080): at java.lang.reflect.Method.invoke(Method.java:511) 03-26 20:44:44.849: E/AndroidRuntime(12080): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 03-26 20:44:44.849: E/AndroidRuntime(12080): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558) 03-26 20:44:44.849: E/AndroidRuntime(12080): at dalvik.system.NativeStart.main(Native Method) 

这是我的代码添加添加通知

 protected void addNotification(final Bitmap Avatar, final int small_Image_ID, final int notify_id, final String text, final String title, final Boolean ongoing, final Boolean ticker, final String tickerText, final Boolean autoCancel, final String notificationCategory, final int notificationValue) { try { final Intent notificationIntent = new Intent( getApplicationContext(), CheckerActivity.class); notificationIntent .putExtra(notificationCategory, notificationValue); notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); final PendingIntent contentIntent = PendingIntent.getActivity( getApplicationContext(), notify_id, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); final NotificationManager nm = (NotificationManager) context .getSystemService(Context.NOTIFICATION_SERVICE); final NotificationCompat.Builder builder = new NotificationCompat.Builder( context); if (Ticker) { builder.setContentIntent(contentIntent) .setSmallIcon(small_Image_ID) .setOngoing(ongoing) .setLargeIcon(Avatar).setTicker(tickerText) .setWhen(System.currentTimeMillis()) .setAutoCancel(AutoCancel).setContentTitle(title) .setContentText(text); // Текст уведомления } else { builder.setContentIntent(contentIntent) .setSmallIcon(small_Image_ID) .setLargeIcon(avatar) .setOngoing(ongoing) .setWhen(System.currentTimeMillis()) .setAutoCancel(AutoCancel).setContentTitle(title) .setContentText(text); // Текст уведомления } final Notification n = builder.getNotification(); nm.notify(notify_id, n); } catch (final Exception e) { // TODO: add exception handling code } } 

为什么我的服务被杀害?

我注意到这发生在3.0模拟器,当我设置大图标。

因此,由于大图标仅被4.0+设备使用,我通过检查Build版本是否> 13来解决这个问题。如果是(并且只有这样),我设置大图标。

问题已经消失。

此问题是缺less资源或空资源的结果。 看看你的代码,我推断,可能的错误似乎是在Ticker (总是false)setLargeIcon(avatar) (头像总是空)

你可以发布你所有的服务实现吗?

PS请尽量尊重java的命名约定; Ticker,Avatar,AutoCancel和其他对象应以小写字母开头。

那么,在我的情况下,我得到了这个完全相同的错误,因为我在我的自定义通知布局中引用了一个TextView的样式定义,它具有一个onClick目标方法的条目。 特别:

 <item name="android:onClick">onClick</item> 

一旦我删除了这条线,问题就消失了。 对我来说是一个疏忽,但是不要盲目重用风格。