0

onReceive(バッテリーブロードキャスト)を持つアクティビティと、データをShared Preferencesに挿入するサービスがあります。次に、アクティビティからそのデータを取得します。私の問題は、電話の向きを変えたときにのみデータが更新されることです。そうしないと、Activity に古い共有設定データが表示されます。どんな助けでも大歓迎です。

私が知りたいこと:

  • ブロードキャスト メソッドでアクティビティを更新するonReceive方法。
  • SharedPreferences が正しく表示されないのはなぜですか?
4

3 に答える 3

1

2つのアイデア:

1)サービスで共有設定を編集する場合は、必ず電話apply()するかcommit()、実際に共有設定を更新してください。

2)アクティビティでは、registerSharedPreferenceListenerを介して共有設定リスナーを登録して、アクティビティで設定がいつ更新されるかを確認してください。

于 2013-03-11T13:38:50.850 に答える
1

携帯電話を回転させると、アクティビティが再作成されます。次の方法で、アクティビティを終了して再開できます。

finish();
startActivity(getIntent());

これがあなたの場合に最適なオプションであるかどうかはわかりませんが、これを使用して Web サービスでアクティビティを更新すると、正常に動作します!

于 2013-03-11T13:39:20.180 に答える
1

これを行うには、アクティビティを手動で再起動するだけです...これが私が使用した方法です

public void reload() {

    Intent intent = getIntent();
    overridePendingTransition(0, 0);
    intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
    finish();

    overridePendingTransition(0, 0);
    startActivity(intent);
}

このメソッドを使用すると、トランジションによるアニメーションがなくなります。

于 2013-03-11T13:40:36.577 に答える