android widget 在几个小时后停止更新代码?

标签 android widget battery

我正在研究电池小部件,所以每当 Intent.ACTION_BATTERY_CHANGED 发生时,小部件 onReceive() 方法就会接收到它,我可以从那里获取它的数据,现在问题是,这整个过程很好但是当时间过去意味着你可以说小部件可以说大约 4 到 5 个小时并且小部件停止更新,目前我正在使用 textView 显示电池数据但几个小时后小部件停止更新数据这里的textView是代码

这里是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);
}

这里是on的onRecive方法

    @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);
}

最佳答案

您不能通过这种方式从另一个 BroadcastReceiver 注册一个 BroadcastReceiver。您不能在 onReceive() 中执行任何会在 onReceive() 本身结束后继续存在的事情。

关于android widget 在几个小时后停止更新代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8261713/

相关文章:

android - 在 Android 中使用位置服务后,通过 Google Play 服务持续消耗电池电量

java - 获取电池充电时间

android - 如何读取 Assets 文件夹中的 .pdf 文件

android - 类似 Twitter 的背景动画可在 Android 中绘制

android - 如何获得带小数点的电池温度?

android - 我应该如何更新我的小部件?

Jquery 无法排序并将大项目拖到底部

android - 搜索 Recyclerview - 当搜索为空时滚动到顶部

android - java.lang.ClassNotFoundException : Didn't find class on path: DexPathList , 更新sdk后

java - GWT 应用程序的 Google +1