我制作了用于阅读新闻的小部件。如果我在主屏幕上放置一个小部件,一切都很好。但是,如果我在主屏幕上放置了第二个小部件并将其删除,则该小部件的服务就会停止。因此,如果小部件进入更新方法,则会发生错误。
java.lang.RuntimeException: Unable to start service news.WidgetActivity$UpdateService@405231d8 with Intent { flg=0x10000000 cmp=news/.WidgetActivity$UpdateService bnds=[26,97][79,151] }: java.lang.NullPointerException
这一行有一个空指针:
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget);
代码如下:
public static class UpdateService extends Service {
@Override
public void onStart(Intent intent, int startId) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget);
remoteViews.setViewVisibility(R.id.WidgetRefresh_btn, View.GONE);
remoteViews.setViewVisibility(R.id.progressWidget, View.VISIBLE);
appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
WidgetActivity.Widget.onUpdate(context, appWidgetManager, appWidgetIds);
}
@Override
public IBinder onBind(Intent arg0) {
return null;
}
}
最佳答案
您的 context
对象可能为 null。由于您处于扩展Context
的服务中,因此您也可以使用this.getPackageName()
或仅使用getPackageName()
。
关于java - 无法在 Android 中启动服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7098059/