問題タブ [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.
android - アクティビティが終了したときに AsyncTask をキャンセルするには?
私のアクティビティでは、複数の AsyncTask クラスを使用しています。
アクティビティが終了したときに AsyncTask をキャンセルするには?
android - 画面回転中に AsyncTask を処理するには?
インスタンスの状態を保存する方法や、画面の回転中にアクティビティが破壊された場合の対処方法について、よく読んでいます。
多くの可能性があるようですが、AsyncTask の結果を取得するのに最適な方法はわかりません。
私は単に再び開始され、アクティビティのメソッドを呼び出すいくつかの AsyncTasks を持っていますisFinishing()
。アクティビティが終了している場合、それらは何も更新しません。
問題は、失敗または成功する可能性のある Web サービスへの要求を行う 1 つのタスクがあり、タスクを再起動するとユーザーに経済的損失が生じることです。
これをどのように解決しますか?考えられる解決策の長所と短所は何ですか?
android - Android で最も「死に強い」コンポーネントは何ですか?
アクティビティから呼び出される AsyncTasks のディスパッチャーとして最適なクラスを探しています。
次のいずれかになると思います。
- Applicationのサブクラス。
- Serviceのサブクラス。
- 私自身の静的なもの。
私にとっては、3番目の選択肢を実装する方が簡単です。しかし問題は、サービスやアプリケーションよりも「死に強い」かどうかです。また、アプリケーションとサービスのどちらが長生きするかは非常に興味深いことです。私の推測では、アプリ (Android の観点からはタスク) プロセスが存続する限り、アプリケーションは存続します。
したがって、基本的には、最も「静的な」ものに依存したいので、「死に強い」品質によってこれらのオプションを分類する必要があります。
アップデート:
当初、この質問は2010 年に (1) Android が開発者にとって新しいプラットフォームであり、(2) Google のドキュメントがアプリ コンポーネントのライフサイクルとアプリ プロセスのライフサイクル全体についてあまりにも曖昧であった (場合によっては誤解を招くものでさえあった) ときに尋ねられました。 .
android - Android: 大きなファイルをダウンロード
インターネットから大きなファイル (>20Mb) をダウンロードしようとしています
行のコメントを外すと
ダウンロードの 7 ~ 15% 後、プログレスバーのダイアログが閉じ、「完了!」と表示されます。ログで。なんで?
android - Android のスレッド化とデータベースのロック
AsyncTasks
データベースのテーブルとカーソルにアクセスするために使用しています。
残念ながら、データベースがロックされているという例外が時折見られます。
読み取りスレッドとは異なるスレッドからデータベースに書き込むコードの一般的な例と、スレッドの安全性を確保するにはどうすればよいですか。
私が持っていた 1 つの提案はContentProvider
、複数のスレッドからのデータベースへのアクセスを処理するため、 を使用することです。これを見ていきますが、これはそのような問題を処理するための推奨される方法ですか? 前か後ろかということを考えるとかなり重量級に見えます。
android - Android ASync タスクの ProgressDialog は、バックグラウンド スレッドが終了するまで表示されません
URL から RSS フィードを取得し、SAX パーサーを使用して XML の各項目を配列に貼り付ける Android アクティビティがあります。これはすべて正常に機能しますが、予想どおり、少し時間がかかるため、AsyncActivity を使用してバックグラウンドで実行したいと考えています。私のコードは次のとおりです。
私が電話するonCreate()
もの
行は正常にitems = parser.getItems()
機能します - items
XML からの各項目を含む配列リストです。私が直面している問題は、アクティビティの開始時に、メソッドが終了するonPreExecute()
まで作成した ProgressDialog が表示されないことです。つまり、黒い画面が表示され、長い一時停止の後、項目が完全に入力されたリストが表示されます。これはなぜですか? UI の描画、ProgressDialog の表示、パーサーが項目を取得して段階的にリストに追加し、ProgressDialog が閉じないのはなぜですか?doInBackground()
android - ProgressDialogは、AsyncTaskが完了するまで表示されません
AsyncTaskがRemoteServiceにバインドしているときに、無期限のProgressDialogを表示しようとしています。RemoteServiceは、サービスが最初に作成されたときにユーザーの連絡先のリストを作成します。連絡先の長いリストの場合、これには5〜10秒かかる場合があります。
私が抱えている問題は、RemoteServiceが連絡先のリストを作成するまでProgressDialogが表示されないことです。ProgressDialogが表示される時間を与えるために、Thread.sleepを入れてみました。sleepステートメントを使用すると、ProgressDialogがロードされて回転を開始しますが、RemoteServiceが動作を開始するとすぐにロックアップします。
AsyncTaskをダミーコードに変えて、しばらくスリープ状態にすると、すべてが正常に機能します。しかし、タスクが実際の作業を行う必要がある場合、それはUIがただ座って待機しているようなものです。
私が間違っていることについてのアイデアはありますか?
編集:onCreateDialogを追加
android - Android TabActivity でのオプション メニューの奇妙な動作
4 つのタブがありTabActivity
ます (それぞれが独自のアクティビティです)。各タブは独自のonCreateOptionsMenu
(場合によってはonPrepareOptionsMenu
) を定義します。各タブが読み込まれると、AsyncTask
そのタブのリストに入力するために必要なデータを取得するために が開始されます。
タブを非常にすばやく切り替えて (読み込み中)、メニュー ボタンを押すと (現在のタブAsyncApiTask
がまだ実行中)、間違ったオプション メニューが表示されることがあります。
たとえば、FooActivity
(タブ 1) には「更新」項目のあるオプション メニューがあり、BarActivity
(タブ 2) には「すべて表示」項目のあるオプション メニューがあるとします。(タブ 1 がアクティブな状態で) アプリを起動し、すぐにタブ 2 に切り替えてからメニューをクリックすると、(予期される「すべて表示」項目ではなく) 「更新」項目が表示されることがあります。
さらに、この奇妙な動作は、最初にメニューを押したときに発生することがありますが (後で押すと正しい項目が表示されます)、「スタック」して、タブを切り替えるまで押すたびに間違った項目が表示されることがあります。
何が起こっているのでしょうか?このようなことは聞いたことがなく、良い提案を見つけることができませんでした。
android - AsyncTask スレッド化規則 - 本当に 1 回しか使用できないのですか?
AsyncTaskのドキュメントでは、スレッド化に関連するルールとして次のように規定しています。
- タスクは 1 回だけ実行できます (2 回目の実行を試みると、例外がスローされます)。
これは、クラスを使用するたびにクラスの新しいインスタンスを作成する必要があることを意味しますよね? つまり、次のようにする必要があります。
または逆に、次のことはできません。
誰かがこれが正確な解釈であることを確認できますか?
これを入力していたので、自分でこれに答えただけだと思います...しかし、すぐにはわからなかったので、それでも投稿した方が便利だと思います。
android - AsyncTask から呼び出しアクティビティへの参照を取得する (内部クラスとしてではない)
呼び出し元の Activity クラスの内部クラスではない AsyncTask 内から、AsyncTask の実行を開始した Activity のインスタンスへの参照を取得することはまったく可能ですか?
私はこのスレッドを認識していますが、呼び出し元のアクティビティを参照する方法を正確に扱っているわけではありません。Activity への参照をパラメーターとして AsyncTask コンストラクターに渡すことを提案する人もいますが、そうすると常に NullPointerException が発生することが報告されています。
だから、私は途方に暮れています。私の AsyncTask は堅牢な機能を提供しており、それを使用するすべてのアクティビティで内部クラスとして複製する必要はありません。エレガントなソリューションが必要です。