安卓:电池电量小部件没有更新

6

我使用RemoteViews时遇到了一些问题。我只想做一个显示电池电量的小部件。我已经完成了所有其他工作。

这是我的类:

public class BatteryLevel extends AppWidgetProvider{
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){ context.startService(new Intent(context, BatteryMonitorReceiver.class)); }
public static class BatteryMonitorReceiver extends Service{ private int currentBatteryLevel = 0;
private BroadcastReceiver batteryReceiver = new BroadcastReceiver(){ @Override public void onReceive(Context context, Intent intent){ currentBatteryLevel = intent.getIntExtra("level", 0); } };
@Override 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); }
@Override public IBinder onBind(Intent intent){ return null; } } }

当我启动应用程序时,没有错误,但是R.id.level也没有更新。

怎么办?

注意:API版本为7。

1个回答

3

由于您的服务是内部类,我猜测您还没有在Android清单文件中声明,这是必需的。 而且您不应该使用 onStart,因为它已经被弃用了。请使用onStartCommand。您还忘记注销接收器...


谢谢您的回答。但仍然存在问题。已更新清单并将onStart更改为onStartCommand,但现在未覆盖。 - Ogulcan Orhan
1
参数不同。请在此处阅读:http://developer.android.com/reference/android/app/Service.html - Jong

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接