2

私はデバイス起動完了時に開始できるサービスに取り組んでいます。サービス実行状態を保存するために設定ファイルを設定していますので、ブロードキャストレシーバーで必要なときに取得できます。起動済みのブロードキャストレシーバーコンテキストパラメーター

public class MyServiceBootReceiver extends BroadcastReceiver { 
public MyServiceBootReceiver() {super();} 

@Override 
public void onReceive(Context context, Intent intent) { 
    if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { 
     if(MyService.isRunning(context)) //static method to get shared preferences value 
     context.startService(new Intent(context, MyService.class)); 
    } 
} 

}

デバイスコンテキストが受信機に送られるシャットダウン、ある場合にアプリケーションとそのすべてのコンポーネントが破壊されるので、今は、onReceive()メソッドの「コンテキスト」パラメータについて混乱しています、アプリケーションのコンポーネントが実際にそれを受け取っていますか?

+0

ドキュメントには次のように書かれています(https://developer.android.com/reference/android/content/BroadcastReceiver.html#onReceive(android.content.Context、android.content.Intent))_Context:受信機が起動しています._ – fsnasser

+0

起動時に私のアプリケーションコンポーネントは何も実行していませんか?ただし、アンドロイドOSが破壊されても私のアプリへの参照を保持している場合を除きます! – Altaiir

答えて

2

あなたのBroadcastReceiverを呼び出す前に、Androidはあなたのアプリケーションのアプリケーションコンテキストを作成します。アプリケーションを継承し、onCreateのログを作成する独自のクラスを持っている場合は、実際にこのようなことが起こります。

ただし、受信者で受け取った文脈は制限されています。registerReceiver()またはbindService()に電話をかけることはできません。

さまざまな種類のコンテキストに関する詳細は、hereを参照してください。

+0

しかし、デバイスの起動時に、アプリケーションのコンテキストはまだアンドロイドシステムによって何とか保たれていますか? – Altaiir

+0

Androidがあなたのアプリをバックグラウンドから削除すると、アプリケーションコンテキストが破棄されます。つまり、デバイスが再起動されると、アプリのコンテキストも破棄されます。 – BMacedo

+0

正確には、そのコンテキストは何ですか?コンテキストが実際に私の "MODE_PRIVATE"共有設定ファイルにアクセスし、サービスが実行されているかどうかを確認して再起動するように、コードがうまく動作していることを確認してください。 – Altaiir

関連する問題