0

ボタンであるアンドロイドウィジェットを作っています。

それをクリックすると、ウィジェットはサービスを昼食し、サービスは共有設定に変更を書き込みます。次に、ウィジェットはupdateメソッドを呼び出して、サービスで変更された設定値に応じて背景を変更する必要があります。

問題は、updateメソッドがサービスの前に実行されるため、ウィジェットは、サービスが変更する前に、共有設定に格納されている最後の値を更新することです。

必要なもの:-ウィジェットボタンをクリックします-OnReceiveメソッド-startService()を呼び出します-サービスが実行されています-サービス中:共有参照を編集します-サービスが終了します-編集された共有設定の値に応じて更新ウィジェットを呼び出します

実際に機能するもの:-ウィジェットボタンをクリックします-OnRecievedメソッド-startService()を呼び出します-編集された共有設定の値に応じて更新ウィジェットと更新を呼び出します(まだ編集されていません)-サービスは実行中です-サービス中:共有参照を編集します-サービスは終了します

私のコード:-OnReceive()-OnReceive()内:--- startService(); --- updateWidgets();

updateメソッドの実行を開始する前にサービスを完全に実行するにはどうすればよいですか????

4

1 に答える 1

0

startService()はブロッキング操作ではないため、onReceive()でstartService()とupdateWidgets()を順番に実行している場合、サービスの開始と終了を待たずにupdateWidgets()を実行します。

希望どおりにするには、サービスstartCommand()の最後にupdateWidgets()を呼び出し、finish()を呼び出してサービスを終了する必要があります。

于 2013-02-18T18:57:27.680 に答える