2

AsynTask クラス内で定義された特定のメソッドを別のクラスやサービスから呼び出すことができるかどうか疑問に思っていましたか? 私の特定のケースでは、いくつかのサウンドを再生するサービスがありますが、サウンドは利用可能なサウンドのリストから選択されます...

サウンドが選択されると、ホーム サーバーからダウンロードされますが、これには時間がかかります (それほど時間はかかりません。たとえば、3 ~ 4 秒ほどかかります。サウンド/エフェクトのサイズは大きくありません)。私はそれらのサウンドを再生するサービスを持っているということです.1つを選択すると、進行状況ダイアログを表示したかったのです.方法は(私が正しく理解していれば)AsyncTaskを使用することですが、AsyncTaskが行う唯一のことは私に伝えることです.サーバーから特定のサウンドを再生するサービス...したがって、サービスからAsynctaskへの「コールバック」はありません...

どうすればそれを達成できますか?別のクラスにある実行中の AsyncTask を呼び出して、すべての作業が完了したことを伝えて、 ProgressDialog の表示を停止するにはどうすればよいですか? それとも私はそれを過度に設計していて、他の方法がありますか? 前もって感謝します...

4

2 に答える 2

0

ダウンロードごとに 1 つの asyncTask を使用します。ダウンロード作業は doInBackground メソッドで行います。onPostExecute メソッドをオーバーライドして、サウンドのダウンロード後に行う必要があるすべての作業を行うことができます。あなたの場合、進行状況ダイアログを非表示にして、再生サービスに新しい音楽が利用可能であることを伝えると思います。

AsyncTask の詳細については、Android のドキュメントをご覧ください。

于 2010-06-01T08:35:02.763 に答える
0

実際、あなたが望んでいると思うのは反対です。はAsyncTask、進行状況ダイアログを表示するためではなく、長時間実行されるプロセスを実行するために使用する必要があります。実際、タスクのバックグラウンド プロセスを使用して UI のどの部分にもアクセスしないでください。したがって、ダイアログを表示し、タスクを開始してから、onPostExecuteUI コンポーネントを操作できるメソッドでタスクにダイアログを閉じさせます。

于 2010-06-01T10:53:04.240 に答える