0

SMS経由で他のモバイルから制御できるAndroidアプリケーションに取り組んでいます。私はPreferenceScreenレイアウト(アプリの設定部分)として使用しています。onResume()が呼び出されると、レイアウトが更新されます。

コマンド (SMS) が他のモバイル経由で送信されると、バックグラウンドで実行されているサービスが着信 SMS をスヌープし、SharedPreferences に保存されている設定を変更します。これらの変更を確認するには、Activity でコードを実行する必要がありますonResume。以前のアクティビティに戻って戻ってくると、変更が表示されます。

実行中のサービスによって SharedPreferences が変更されるとすぐに変更が表示されるようにします。それを実現するにはどうすればよいですか?

4

1 に答える 1

1

このようなもの:

public class MyActivity extends Activity implements OnSharedPreferenceChangeListener
{
    public static final String PREFS_NAME = "MyPrefsFile";

    @Override
    protected void onCreate(Bundle state)
    {
      /* get shared preferences */
      SharedPreferences mySharedPreferences = getSharedPreferences(PREFS_NAME, 0);

      /* register listener for changes to the values within the shared preferences */
      mySharedPreferences.registerOnSharedPreferenceChangeListener(this);
    }

    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
    {
      /* perform application processing */
      ...

      /* update layout */
      View myView = findViewById(id.my_view);

      /* invalidate the view causing it to be redrawn */
      myView.invalidate();
    }
}
于 2012-04-14T00:58:02.660 に答える