android 小部件在几个小时后停止更新代码?
我正在开发一个电池小部件,因此当发生 Intent.ACTION_BATTERY_CHANGED
时,它会由小部件 onReceive() 方法接收,我可以从中获取其数据,现在问题是,整个过程都会找到很好,但是随着时间的推移,你可以说小部件开始运行,大约可以说 4 到 5 小时,小部件停止更新,目前我正在使用 textView 来显示电池数据,但几个小时后,小部件停止更新此处 textView 中的数据就是代码
这里是widget的update方法
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
context.getApplicationContext().registerReceiver(this,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
ComponentName cn =
new ComponentName(context, BatteryInfoActivity.class);
appWidgetManager.updateAppWidget(cn, this.views);
}
这里是ononRecive方法
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
//Integer level = intent.getIntExtra("level", -1);
String mgs = "--";
//String BatterInfo = "Level"+ intent.getIntExtra("level", -1)+ "/" + intent.getIntExtra("scale", -1);
Integer level = intent.getIntExtra("level", -1);
Integer scale = intent.getIntExtra("scale", -1);
Integer temp = intent.getIntExtra("temperature",-1);
Integer voltage = intent.getIntExtra("voltage", -1);
Integer health = intent.getIntExtra("health", -1);
boolean present = intent.getBooleanExtra("present", false);
Integer plugged = intent.getIntExtra("plugged", -1);
String technology = intent.getStringExtra("technology");
Integer status = intent.getIntExtra("status",-1);
mgs = mgs + " Technology " + technology + "--";
mgs = mgs + "Battery is Present " + present+"--";
mgs = mgs + " level "+ level + "/" + scale + "--";
mgs = mgs + "tempuratue" + temp + "--";
mgs = mgs + "voltage"+ voltage + "--";
this.views.setTextViewText(R.id.textView1, mgs);
ComponentName cn =
new ComponentName(context, BatteryInfoActivity.class);
AppWidgetManager.getInstance(context).updateAppWidget(cn, this.views);
}
super.onReceive(context, intent);
}
I am working on a battery widget, so when ever Intent.ACTION_BATTERY_CHANGED
occurs it is received by widget onReceive() method from where I can get its data now the problem is this, that this whole procedure goes find fine but when time passes means you can say widget gets live round about can say 4 to 5 hours and Widget stops update, at the moment I am using textView to show the data of battery but after some hours widget stops updating data in the textView here is the code
here is the update method of widget
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
context.getApplicationContext().registerReceiver(this,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
ComponentName cn =
new ComponentName(context, BatteryInfoActivity.class);
appWidgetManager.updateAppWidget(cn, this.views);
}
here is the on onRecive method
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
//Integer level = intent.getIntExtra("level", -1);
String mgs = "--";
//String BatterInfo = "Level"+ intent.getIntExtra("level", -1)+ "/" + intent.getIntExtra("scale", -1);
Integer level = intent.getIntExtra("level", -1);
Integer scale = intent.getIntExtra("scale", -1);
Integer temp = intent.getIntExtra("temperature",-1);
Integer voltage = intent.getIntExtra("voltage", -1);
Integer health = intent.getIntExtra("health", -1);
boolean present = intent.getBooleanExtra("present", false);
Integer plugged = intent.getIntExtra("plugged", -1);
String technology = intent.getStringExtra("technology");
Integer status = intent.getIntExtra("status",-1);
mgs = mgs + " Technology " + technology + "--";
mgs = mgs + "Battery is Present " + present+"--";
mgs = mgs + " level "+ level + "/" + scale + "--";
mgs = mgs + "tempuratue" + temp + "--";
mgs = mgs + "voltage"+ voltage + "--";
this.views.setTextViewText(R.id.textView1, mgs);
ComponentName cn =
new ComponentName(context, BatteryInfoActivity.class);
AppWidgetManager.getInstance(context).updateAppWidget(cn, this.views);
}
super.onReceive(context, intent);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您无法通过这种方式从另一个
BroadcastReceiver
注册一个BroadcastReceiver
。您无法在onReceive()
中执行任何超出onReceive()
本身末尾的操作。You cannot register a
BroadcastReceiver
from anotherBroadcastReceiver
this way. You cannot do much of anything inonReceive()
that would live past the end ofonReceive()
itself.