1

アクティビティ 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 を呼び出してアクティビティ スタックに配置します。これは可能ですか?

4

1 に答える 1