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 应用小部件未更新

Android主屏幕小部件未更新

Android 小部件:updateAppWidget() 未调用 onDataSetChanged

Android 小部件 - 使用带有远程视图的 setOnClickPendingIntent 未收到 Intent

Android 小部件未在屏幕上显示

小部件未出现在小部件列表中