私はAndroidが初めてです。現在のバッテリー残量を表示するウィジェットを作成したいと考えています。いくつかのチュートリアルを読んだ後、私は次のことを行いました。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はメモリを解放するために削除しているだけだと思います。問題は、どうすればこれを回避できるかということです。プロセスを常に有効にするにはどうすればよいですか?