質問

onPreExecuteメソッド中に表示されるAlertDialogが閉じられるまで、AsyncTaskのdoInBackgroundメソッド/スレッドが開始しないようにする方法はありますか?

doInBackgroundは、onPreExecuteが完了したときにのみ実行することを目的としていますが、私が知る限り、AlertDialogを開いていても、onPreExecuteの完了は停止しません。

詳細: 現在私の電話にいるのでコードサンプルを提供することはできませんが、コードの概要は、電話会社のネットワーク上にあるため、モバイルデータ経由でのみアクセスできるデータを必要とするアプリであるということです。 getData asynctaskのpreExecは、最初にWi-Fiが起動しているかどうかを確認し、起動している場合は、[Wi-Fiを無効にする]オプションと[キャンセル]オプションを含むアラートダイアログを表示します。

キャンセルするとタスクが終了し、Wi-Fiを無効にするとWi-Fiが無効になります。次に、doInBgメソッドは、モバイルデータ接続がアップしているかどうかを確認し、アップしていない場合は、スリープループに入るまでループします。起動すると、doInBgはデータを取得します...

現在、wifiがオンの場合、ダイアログが閉じられる前にdoInBgが開始され、何かが原因でモバイル接続が起動するまでスリープループに閉じ込められます...これは、回避したい潜在的な問題につながります。

役に立ちましたか?

解決

どこかで起動してWi-Fiが起動しているかどうかを確認してから、AlertDialogListenerを使用してAlertDIalogのボタンのアクションをキャッチできます。その後、AlertDialogListener内でAsyncを開始できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top