アクティビティ A を作成しました。ユーザーがボタンを押すと、MyConfig.doSomething() が実行されます。ここで、MyConfig は、アクティビティ A が渡された単純なクラスです。
public class A extends PreferenceActivity {
private MyConfig mMyConfig;
/* pseudo code, when button clicked, call */
mMyConfig.doSomething();
}
mMyConfig では、一部の構成の SharedPreferences にアクセスします。したがって、getSharedPreferences() を呼び出すためにアクティビティを mMyConfig に渡すためにこれを行うことができます。
mMyConfig = new MyConfig ( this );
ここに私の要求があります:
すでに実行していることをしたいのですMyConfig.doSomething()
が、ユーザーがボタンをクリックして呼び出す場合を除いて、Android の起動時に呼び出したいと思います。
BroadcastReceiver を拡張する別のクラスを作成し、 を呼び出してアクティビティ A を開始startActivity(A.class)
し、A でいくつかのトリックを実行してmMyConfig.doSomething()
実現することができます。動作しますが、Android の起動時にアプリケーションが画面に表示されます。
mMyConfig.doSomething()
ユーザーに意識させずに暗黙のうちに実現したい。2つの解決策が考えられると思いますが、それを行う方法がわかりません。
ソリューション A: BroadcastReceiver を拡張するクラスを作成し、A の SharedPreferences を読み取るサービスを (アクティビティ A の代わりに) 開始し、MyConfig オブジェクトを作成して実行しますdoSomething()
。ただし、アクティビティ自体が起動されない場合、これが機能するかどうかはわかりません。どうすればこれを行うことができますか (サービスから SharedPreferences を読み取る)?
ソリューション B: BroadcastReceiver を拡張するクラスを作成し、表示せずにアクティビティ A を開始しstartActivity(A.class)
、onReceive を呼び出してアクティビティ スタックに配置します。これは可能ですか?