をService登録していますContentObserver。変更を検出すると、ContentObserverService のboolean変数を true に設定します。私はまたThread、しばらくの間スリープし、ウェイクアップしてその変数をチェックするサービスを実行しています。
ProgressDialog変更を検出すると、他のコードを処理するのに時間がかかるため、遅延中に表示する必要があります。これどうやってするの?
をService登録していますContentObserver。変更を検出すると、ContentObserverService のboolean変数を true に設定します。私はまたThread、しばらくの間スリープし、ウェイクアップしてその変数をチェックするサービスを実行しています。
ProgressDialog変更を検出すると、他のコードを処理するのに時間がかかるため、遅延中に表示する必要があります。これどうやってするの?
あなたの質問の本質は、あなたのサービスがあなたの UI に何らかのメッセージを送信することです (読み込みダイアログを表示するため)。
これには 4 つ (またはそれ以上) の方法があります。
これらのオプションは見覚えがあるかもしれません: Android サービスがアクティビティと通信する方法
これらのオプションを読んで、選択する必要があります。
AsyncTask代わりに使用する必要があります。
ライブラリへのリンクはこちらです。それはかなり簡単です:
1) onPreExecute()= 表示ProgressDialog
2) doInBackground()= コードを実行する
3) onPostExecute()= 却下ProgressDialog
終わり :-)
AsyncTask は良い代替手段ですが、スレッドを使用することにした場合でも、UI に ProgressDialog を表示するにrunOnUiThread()は、アクティビティのメソッドを呼び出す必要があります。
Inside your Thread from Serviceに ProgressDialog を表示したい場合は、次のMainActivity.ようにする必要があります。
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
// Display ProgressDialog here
}
});
回答ありがとうございます。これらの手順を使用して問題を解決します-変数が変更されたときにインテントをブロードキャストします-インテント用の BroadcastReceiver を作成します(アクティビティ内)-BroadcastReceiver のメソッド onReceive 内で、アクティビティの runOnUiThread を呼び出します