【问题标题】:Android: BatteryLevel widget not updatingAndroid:BatteryLevel 小部件未更新
【发布时间】: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。

【问题讨论】:

    标签: android service android-widget


    【解决方案1】:

    由于你的服务是一个内部类,我猜你没有在你的 Android Manifest 中声明它,这是需要的。 而且您不应该使用onStart,它已被弃用。使用onStartCommand。而且您忘记取消注册您的接收器...

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 2017-04-09
    相关资源
    最近更新 更多