2017-08-24 9 views
1

私はアンドロイドにほんの少しのウィジェットしか書いていませんが、いつも私は好奇心をそそられました。 onUpdate()メソッドでは、すべてのウィジェットIDをループし、と表示されます。複数のウィジェットがアクティブなので、すべてを更新することができます。しかし、なぜこのようなウィジェットから他のウィジェットを更新しなければならないのでしょうか?1つのウィジェットから複数のウィジェットを更新する必要があるのはなぜですか?

override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray) { 
    // There may be multiple widgets active, so update all of them 
    for (appWidgetId in appWidgetIds) { 
     updateAppWidget(context, appWidgetManager, appWidgetId) 
    } 
} 

すべてのウィジェットは、独自のブロードキャスト再生機能を備えており、それぞれ独自に実行できます。なぜ別のウィジェットから更新を呼び出さなければならないのですか?

これは非常に単純なロジックであれば簡単に私の質問をしてください。

+0

ブロードキャスト受信機として登録されているウィジェットを更新する必要はありません。そうでない場合は、必要があります。 – daniu

答えて

1

すべてのウィジェットはありません、それはない、独自のブロードキャストreviever

を持っています。

最初に、AppWidgetProviderクラスは、そのプロバイダが提供するすべてのアプリウィジェットを処理します。ユーザーがそのアプリウィジェットのインスタンスを複数作成した場合(たとえば、複数の都市の天気予報など)、そのすべてがその単一のAppWidgetProviderクラスによって更新されます。

第2に、AppWidgetProviderの個々のインスタンスは、単一の電話に使用されます。これは、AppWidgetProviderBroadcastReceiveronUpdate()onReceive()によってトリガーされ、マニフェストに登録されたBroadcastReceiverのサブクラスがonReceive()呼び出しごとに固有のインスタンスを取得するためです。

+0

このような洞察力のある段落ありがとうございました。 – erluxman

関連する問題