Ogu*_*han 7 service android android-widget
我在使用RemoteView时遇到了一些问题.只想制作一个显示电池电量的小部件.我已经完成了所有其他的事情.
这是我的班级:
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.
由于你的服务是一个内部类,我猜你还没有在你的Android清单中声明它,这是需要的。而且您不应该使用onStart,它已被弃用。使用onStartCommand。而且您忘记取消注册您的接收器......
| 归档时间: |
|
| 查看次数: |
843 次 |
| 最近记录: |