Android 电池部件在一段时间后停止更新

Android 电池部件在一段时间后停止更新,android,widget,battery,Android,Widget,Battery,我正在尝试制作一个电池小部件,它将显示电池电量。当它启动时,工作正常,但一段时间后,它停止工作,并开始显示电池电量为0。请帮我弄清楚我错过了什么 代码如下: public class Widget extends AppWidgetProvider { static int level; static int powers; AppWidgetManager ap; @Override public void onReceive(final Context context, Inten

我正在尝试制作一个电池小部件,它将显示电池电量。当它启动时,工作正常,但一段时间后,它停止工作,并开始显示电池电量为0。请帮我弄清楚我错过了什么

代码如下:

public class Widget extends AppWidgetProvider {
    static int level;
static int powers;
AppWidgetManager ap;

@Override
public void onReceive(final Context context, Intent intent) {
    // TODO Auto-generated method stub
    super.onReceive(context, intent);

    System.out.println(intent.getAction());

    if (intent.getAction().equalsIgnoreCase(Intent.ACTION_BATTERY_CHANGED)) {

        int rawlevel = intent.getIntExtra("level", -1);
        int scale = intent.getIntExtra("scale", -1);

        powers = intent.getIntExtra("plugged", -1);

        level = -1;
        if (rawlevel >= 0 && scale > 0) {
            level = (rawlevel * 100) / scale;
        }
        onUpdatew(context);

    }
}

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
        int[] appWidgetIds) {
    final int N = appWidgetIds.length;
    for (int i = 0; i < N; i++) {
        int appWidgetId = appWidgetIds[0];

        Intent intent = new Intent(context, xyz.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
                intent, 0);

        RemoteViews views = new RemoteViews(context.getPackageName(),
                R.layout.widget_main);

        views.setTextViewText(R.id.txt1, level + "");
        Log.i("Power", powers + "");
        Log.i("Level", level + "");

        views.setOnClickPendingIntent(R.id.iv, pendingIntent);
        appWidgetManager.updateAppWidget(appWidgetId, views);

        super.onUpdate(context, appWidgetManager, appWidgetIds);
    }

}

@Override
public void onEnabled(Context context) {
    // TODO Auto-generated method stub
    System.out.println(context.getApplicationContext().registerReceiver(
            this, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)));
    onUpdatew(context);
    super.onEnabled(context);
}

public void onUpdatew(Context context) {
    RemoteViews views = new RemoteViews(context.getPackageName(),
            R.layout.widget_main);

    views.setTextViewText(R.id.txt1, level + "");

    AppWidgetManager myManager = AppWidgetManager.getInstance(context);
    ComponentName myName = new ComponentName(context, Widget.class);
    myManager.updateAppWidget(myName, views);

}}
公共类小部件扩展了AppWidgetProvider{
静态整数级;
静态整数幂;
AppWidgetManager ap;
@凌驾
公共void onReceive(最终上下文、意图){
//TODO自动生成的方法存根
super.onReceive(上下文、意图);
System.out.println(intent.getAction());
if(intent.getAction().equalsIgnoreCase(intent.ACTION\u电池更换)){
int rawlevel=intent.getIntExtra(“级别”,-1);
int scale=intent.getIntExtra(“scale”,-1);
powers=intent.getIntExtra(“插入式”、-1);
级别=-1;
如果(原始标高>=0&&scale>0){
级别=(原始级别*100)/刻度;
}
onUpdatew(上下文);
}
}
@凌驾
public void onUpdate(上下文上下文,AppWidgetManager AppWidgetManager,
int[]appWidgetIds){
final int N=appWidgetIds.length;
对于(int i=0;i