1

これに関するドキュメントを見つけるのに苦労しています。Android ウィジェットのプロバイダーの場合、その特定のプロバイダー オブジェクトのライフ サイクルはどのようなものですか? 非同期テストを開始して後でオブジェクトを探すと、それがなくなっていることに気付きました。(観察により、onReceive から onUpdate を呼び出すことができ、onUpdate が完了するまで、受信したものが生きていることがわかります)

4

1 に答える 1

3

AppWidgetProviderBroadcatReceiverBroadcatReceive および AppWidgetProvider に関する有用な情報を見つけることができます。Googleドキュメントは言う:

BroadcastReceiver オブジェクトは、onReceive(Context, Intent) への呼び出しの間のみ有効です。コードがこの関数から戻ると、システムはオブジェクトが終了し、アクティブではなくなったと見なします。

これは、 onReceive(Context, Intent) 実装でできることに重要な影響を与えます。非同期操作を処理するには関数から戻る必要があるため、非同期操作を必要とするものはすべて利用できませんが、その時点で BroadcastReceiver はアクティブではなくなるため、システムは非同期操作が完了する前にそのプロセスを自由に強制終了できます。

特に、ダイアログを表示したり、BroadcastReceiver 内からサービスにバインドしたりすることはできません。前者の場合は、代わりに NotificationManager API を使用する必要があります。後者の場合、 Context.startService() を使用してコマンドをサービスに送信できます。

この Web ページも参照してください。

于 2013-03-29T04:32:59.093 に答える