私はアンドロイド開発には初めてです。UIを扱うAndroid非同期タスク
- 外部クラスを呼び出す(他のクラスは、
AsyncTask
を拡張するであろう)xml
を解析し、Webサービスに要求することによってjson
を受信し、ProgressDialog
を開始メインactivty:私は次のように説明したタスクを達成したいです。 - クラスは
doInBackground
メソッドでxml
とjson
を解析します。 - 構文解析が完了した後に
onPostExecute
メソッドで、メインアクティビティに設定されたProgressDialog
を却下します。 - ProgressDialogオブジェクトを解析クラスに渡し、同じオブジェクトをその
onPostExecute
メソッドで破棄することで、これを行うことができます。
私は、引数としてUIオブジェクトのインスタンスを渡すことはプログラムへの良いアプローチではないと思いますが、回避するには別の方法が必要であることを願っています。
お勧めします。 が
+1 :)理論的には、彼は依然として「AsyncTaskにインスタンスを渡す」と言います。 OPがインスタンス全体をコピーするという印象を受けているのだろうか? – JustDanyul
良い点。 Javaのこのような呼び出しの場合と同様に、インスタンスはコピーされません。どちらも良いことと悪いことです。正当な理由がないのにオブジェクトを作成しないためです。これはメモリリークの原因となる可能性があります。特に、アクティビティを殺すような構成変更の場合に非同期タスクが引き続き動作する必要がある場合に発生します。 –
参照がクリアされていない場合は、元のアクティビティとすべてのビューがオリエンテーションスイッチでリークします。アクティビティが死にかけているときには、このケースを処理し、アクティビティが再作成された時点で切り離して再接続する必要があります。 – dmon