我是安卓新手。我想创建一个显示当前电池电量的小部件。在阅读了几个教程后,我做了以下工作。创建了扩展 AppWidgetProvider 的类。在其 onUpdate 和 onEnabled 方法中,使用意图过滤器 ACTION_BATTERY_CHANGED 注册广播接收器。在 onRecieve 方法中,TextView 使用当前电池电量进行更新。
他们来了:
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
{
ComponentName cn = new ComponentName(context, BatteryAppWidgetProvider.class);
context.getApplicationContext().registerReceiver(this, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
appWidgetManager.updateAppWidget(cn, this.views);
}
@Override
public void onReceive(Context context, Intent intent) {
Integer level = intent.getIntExtra("level", -1);
this.views.setTextViewText(R.id.battery_level, level.toString() + "%");
ComponentName cn =
new ComponentName(context, BatteryAppWidgetProvider.class);
AppWidgetManager.getInstance(context).updateAppWidget(cn, this.views);
super.onReceive(context, intent);
}
@Override
public void onEnabled(Context context) {
super.onEnabled(context);
context.getApplicationContext().registerReceiver(this, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}
它可以工作一段时间——我可以在 DDMS 中看到它。但是经过一段时间或在我启动了许多其他应用程序之后。我的进程从 DDMS 中消失了。我认为Android只是删除它以释放更多内存。所以问题是我怎样才能避免这种情况?我怎样才能让我的过程永远活着?