gpt4 book ai didi

android - 如何让广播接收器永远活着? (用于电池小部件)

转载 作者:行者123 更新时间:2023-11-29 18:10:31 25 4
gpt4 key购买 nike

我是 Android 新手。我想创建一个显示当前电池电量的小部件。在阅读了几个教程后,我做了以下事情。创建了扩展 AppWidgetProvider 的类。在它的 onUpdate 和 onEnabled 方法中注册了带有 Intent 过滤器 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 只是删除它以释放更多内存。所以问题是我怎样才能避免这种情况?我怎样才能使我的进程始终处于 Activity 状态?

最佳答案

如果您希望 android 在用户未与小部件/应用程序交互时执行某些操作,您应该使用服务。

Android Service

它旨在用于不需要用户交互的任务,特别适合反复检查某些内容。不能保证操作系统最终仍然不会杀死它,但它会尽可能长地存活。

关于android - 如何让广播接收器永远活着? (用于电池小部件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10985986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com