問題タブ [android-asynctask]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
7734 参照

android - AsyncTask がまだバックグラウンドで実行されている場合、Activity.finish() はどうなりますか?

AsyncTask がまだバックグラウンドで実行されている場合、Activity.finish() はどうなりますか?

アクティビティ スタックからアクティビティをポップするだけで、AsyncTask が完全に完了するまでアクティビティ オブジェクトを破棄するのを待ちますか (AsyncTask はアクティビティの内部クラスであるため)。

また、AsyncTask が、Activity のインスタンスへの参照を保持していない非内部クラスの public である場合、動作が異なるでしょうか?

0 投票する
9 に答える
139560 参照

android - 実行中のAsyncTaskをキャンセルする理想的な方法

を使用して、バックグラウンドスレッドでリモートオーディオファイルフェッチおよびオーディオファイル再生操作を実行していますAsyncTaskCancellableフェッチ操作が実行されている間、進行状況バーが表示されます。

AsyncTaskユーザーが操作をキャンセル(決定)したときに実行をキャンセル/中止したい。そのような場合を処理する理想的な方法は何ですか?

0 投票する
5 に答える
28153 参照

android - Service クラスで AsyncTask を使用することは可能ですか?

すべてはタイトルにあります。

公式ドキュメントにはNote that services, like other application objects, run in the main thread of their hosting process、AsyncTask は UIThread で実行された場合にのみ機能すると記載されています。

Service クラスで AsyncTask を使用することは可能ですか?

私はそうしようとしていますが、常に同じエラーが発生します

...

私は何か間違ったことをしていますか、それともこれは単に不可能ですか?

これが私のサービスクラスのコードです

0 投票する
2 に答える
1521 参照

android - 別のアクティビティメソッドからアクティビティUIを更新しますか?

タブの1つがチャットタイプの機能であるタブウィジェットがあります。チャットデータを一定間隔で更新したい(チャットタブがアクティブかどうかによって異なります)。

最善のアプローチは、メインのTabActivityクラスでAsyncTaskを使用することであるように思われました。これにより、AsyncTaskの実行中にバックグラウンドでチャットアクティビティが破棄される問題を回避できます。アクティビティが破棄および再作成されないようにしたかったので、AsyncTaskが実際のアクティブなアクティビティのデータを変更できなくなりました。

ただし、AsyncTaskがTabActivityアクティビティに含まnotifyDataSetChanged()れているため、メソッドからチャットのListAdapterを直接呼び出す方法はありonPostExecute()ません。TabHost / TabActivityから特定のタブの現在のアクティビティへの参照を取得する方法はありますか?

または、代わりに、チャットアクティビティがTabActivityアクティビティの子アクティビティとして破棄されることはなく(少なくともTabActivityがアクティブな間は破棄されない)、AsyncTaskをチャットアクティビティに配置するだけでよいと想定できますか?

0 投票する
1 に答える
2657 参照

android - 同じアクティビティが2回呼び出されました...複数のAsyncTasksで問題が発生しますか?

3つのファイルをダウンロードするためのAsyncTaskの3つの同時インスタンスがあります。2つの特定のフラグが終了したら、最後にonPostExecute()それぞれによって設定されたフラグをチェックし、両方が真である場合はstartActivity()、次のアクティビティを呼び出します。

私は現在、2回呼び出されるアクティビティ、またはこのタイプの動作に似たものを見ています。画面は次のアクティビティへの「左にスワイプ」のような遷移を実行するため、2回実行されることがあります(そして、私が戻ると、同じアクティビティに戻ります)。アクティビティスタックに配置されているのは、1回だけ呼び出される必要があるアクティビティの2つのバージョンであることは明らかです。

これは、両方のonPostExecute()が同時に実行され、両方がまったく同時に設定されたフラグを互いにチェックしているためでしょうか?2つのプロセスを行ごとに並行して実行する必要があるため、これは非常にありそうにありません...

*****編集***私は間違っていると思っていたので、この質問から多くのことを削除しました。それでも、ここでの答えは非常に有用であることがわかったので、有用な部分を反映するように質問を編集しました。

0 投票する
6 に答える
51187 参照

android - AsyncTaskでトーストを上げる方法、ルーパーを使用するように求められます

バックグラウンドでAsyncTaskによって完了したタスクがあります。ある時点で、何かが完了したことを示すトーストを発行する必要があります。

試しましたが失敗しました Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

どうやってやるの?

0 投票する
1 に答える
2984 参照

android - 別のスレッドでListViewに画像をロードする安全で標準的な方法は?

この質問をする前に、次のものを検索して読みました: ListView Android での画像の遅延読み込み - ListView への画像の遅延読み込みに関する問題

私の問題は、私が持っていることですListView

  • 各行には が含まれておりImageView、そのコンテンツはインターネットからロードされます
  • 各行のビューは、ApiDemo の List14 のようにリサイクルされます

最終的に欲しいもの:

  • ユーザーがスクロールしたときにのみ、画像を遅延して読み込みます
  • 応答性を維持するために、異なるスレッドに画像をロードします

私の現在のアプローチ:

  • アダプターのgetView()メソッドでは、他の子ビューをセットアップするのとは別に、インターネットからビットマップを読み込む新しいスレッドを起動します。その読み込みスレッドが終了すると、Bitmapに設定される が返されます (またはImageViewを使用してこれを行います)。AsyncTaskHandler
  • 私は s をリサイクルするのでImageView、最初に でビューを設定しBitmap#1、後でBitmap#2ユーザーが下にスクロールしたときに に設定したい場合があります。Bitmap#1読み込みよりも時間がかかる場合がBitmap#2あるため、ビューが上書きBitmap#2される可能性があります。WeakHashMapそのビューに最後Bitmapに設定したいものを記憶する を維持することで、これを解決します。

以下は、私の現在のアプローチの擬似コードです。わかりやすくするために、キャッシングなどの他の詳細は省略しました。

まだ問題があります: 一部の画像がまだロードされている間にアクティビティが破棄された場合はどうなりますか?

  • アクティビティが既に破棄されているときに、読み込みスレッドが後で ImageView にコールバックするリスクはありますか?
  • さらに、AsyncTask下にいくつかのグローバルスレッドプールがあるため、長いタスクが不要になったときにキャンセルされない場合、ユーザーが表示
    しないものをロードするのに時間を無駄にする可能性があります. このことをグローバルに保持するという私の現在の設計はあまりにも醜く、最終的には私の理解を超えたリークが発生する可能性があります. ImageLoaderこのようなシングルトンを作成する代わりに 、実際ImageLoaderに異なる の個別のオブジェクトを作成しActivitiesActivityが破棄されると、そのすべて AsyncTaskがキャンセルされることを考えています。これはあまりにも厄介ですか?

とにかく、Androidでこれを行う安全で標準的な方法があるのだろうか. さらに、私はiPhoneを知りませんが、同様の問題があり、この種のタスクを行う標準的な方法はありますか?

どうもありがとう。

0 投票する
2 に答える
2524 参照

android - 別のクラス/サービスから AsyncTask メソッドを呼び出す (コールバック?)

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

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

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

0 投票する
2 に答える
1525 参照

android - 非同期タスクを使用したAndroidアクティビティのテスト

で非同期タスクを開始するAndroidアクティビティの単体テストをどのように作成しますonCreateか?これらのタスクの結果をテストしたいと思います。

0 投票する
2 に答える
1341 参照

android - Androidでサービスを使用する場合

メインアクティビティでボタンを押すと応答してデータをフェッチするクラスがあります。残念ながら、このクラスはアクティビティでもサービスでもないため、問題が発生し続けます。たとえば、コンテキストがないと、リソースIDを文字列に変換できません。

このクラスをサービスにし、メインのアクティビティでクラスが閉じられたときにクラスを停止する必要がありますか?このように、アクティビティからこのクラスにコンテキストを渡す必要がありますか?

または、この問題を処理するためのより良い方法はありますか?

この問題は、このクラスからトーストを送信しようとしたときにも発生します。

更新: ErichとJanuszAsyncTaskは、新しいスレッドを作成し、そのスレッドを強制終了しないことを除いて、完全に機能するクラスの方向を示しました。これは、ユーザーがボタンを押すたびに、別のスレッドが追加され、古いスレッドがそこに座っていることを意味します。