アンドロイドウィジェットは数時間後にコードを更新しませんか?

私はバッテリーウィジェットに取り組んでいますので、Intent.ACTION_BATTERY_CHANGEDが発生したときにウィジェットのonReciveメソッドからデータを取得できます。この問題はこれです。このプロシージャはうまくいきますが、時間が経過するとuが言うことができますウィジェットは約4時間から5時間と言うことができるライブラウンドを取得し、ウィジェットは更新を停止します。瞬時に私はバッテリーのデータを表示するためにtextveiwを使用していますが、数時間後ウィジェットはtextVeiwのデータの更新を停止します。

ここにウィジェットの更新メソッドがあります         @オーバーライド     public void onUpdate(コンテキストコンテキスト、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);
}

ここでは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);
}
2
サラム!これを修正できましたか?私は助けが必要です。
追加された 著者 Muhammad Ali,

1 答え

他の BroadcastReceiver BroadcastReceiver をこの方法で登録することはできません。 onReceive()の終わりを過ぎて生き残ることができる onReceive()では、何もすることはほとんどできません。

0
追加された
これに対する解決策は何ですか?私を案内してもらえますか?私は同じ種類の質問を掲載しました。
追加された 著者 Muhammad Ali,
追加された 著者 Muhammad Ali,