Android:BatteryLevel 小部件未更新
Posted
技术标签:
【中文标题】Android:BatteryLevel 小部件未更新【英文标题】:Android: BatteryLevel widget not updating 【发布时间】:2011-12-23 16:31:16 【问题描述】:我在使用 RemoteViews 时遇到了一些问题。只想制作一个显示电池电量的小部件。我已经完成了所有其他的事情。
这是我的课:
公共类 BatteryLevel 扩展 AppWidgetProvider 公共无效onUpdate(上下文上下文,AppWidgetManager appWidgetManager,int [] appWidgetIds) context.startService(new Intent(context, BatteryMonitorReceiver.class)); 公共静态类 BatteryMonitorReceiver 扩展服务 私有 int currentBatteryLevel = 0; 私人广播接收器电池接收器=新广播接收器() @覆盖 public void onReceive(上下文上下文,意图意图) currentBatteryLevel = intent.getIntExtra("level", 0); ; @覆盖 public void onStart (Intent intent, int startId) registerReceiver(this.batteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); RemoteViews updateViews = new RemoteViews(getPackageName(), R.layout.main); updateViews.setTextViewText(R.id.level, String.valueOf(currentBatteryLevel)); ComponentName thisWidget = new ComponentName(this, BatteryLevel.class); AppWidgetManager manager = AppWidgetManager.getInstance(this); manager.updateAppWidget(thisWidget, updateViews); @覆盖 公共 IBinder onBind(意图意图) 返回空值;
当我启动应用程序时没有错误,顺便说一句,R.id.level 没有更新。
怎么了?
注意:api 版本 7。
【问题讨论】:
【参考方案1】:由于你的服务是一个内部类,我猜你没有在你的 android Manifest 中声明它,这是需要的。
而且您不应该使用onStart
,它已被弃用。使用onStartCommand
。而且您忘记取消注册您的接收器...
【讨论】:
谢谢回答。但还是有问题。更新清单并将 onStart 更改为 onStartCommand 但现在不覆盖。 参数不同。在这里阅读:developer.android.com/reference/android/app/Service.html以上是关于Android:BatteryLevel 小部件未更新的主要内容,如果未能解决你的问题,请参考以下文章
Android 小部件:updateAppWidget() 未调用 onDataSetChanged