問題タブ [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 - Android 非同期タスク
内部にこのようなループを含む Async タスクを作成することをお勧めしますか?
アクティビティを待つ必要があり、サービスが APi と通信する必要があるためです。
ありがとう
android - ASP.NET Async ページで AsyncTimeout をきれいに処理する
この記事によると
Begin イベント ハンドラが常に呼び出される
私が最近まで実際に理解していなかった AsyncTimeout の 2 つ目の意味は、ASP.NET がそのタスクを開始する前にページがタイムアウトした場合でも、登録された非同期タスクの開始イベント ハンドラーが常に呼び出されることです。
このシナリオでは、残りのタスクは基本的に失敗します。ページは既にタイムアウトしていますが、ASP.NET は、登録されているすべてのタスクの開始イベント ハンドラーを呼び出し、その後すぐに対応するタイムアウト イベント ハンドラーを呼び出す動作を続けます。
AsyncTimeout は非同期タスクのキャンセルを意味しない
可能であれば、ページ全体のタイムアウトが発生したら、追加のタスクを開始しないように注意する必要があります。また、タイムアウトが発生したら、残りの実行中のタスクをキャンセルする必要があります。これは推奨/安全ですか? 非同期タスクが存在する可能性のある場所が複数ある場合、HttpWebRequest.BeginGetResponse 呼び出しをきれいにキャンセルするにはどうすればよいですか? たとえば、BeginGetResponse 呼び出しの内部にいる場合、IAsyncResult がそのトラックでの処理を安全に停止するには、何を返す必要がありますか? 同じガイドラインが SqlCommand.BeginExecuteReader に適用されますか?
いくつかの例と独自の追加からサンプル コードをまとめました。
更新: 他に提供すべき情報はありますか?
android - 外部クラスの Android AsyncTask
私はアプリに取り組んできましたが、AsyncTask
それが内部クラスにあるときにうまく機能するようになりました。
AsyncTask
が独自の別のクラスになるようにコードをリファクタリングしていProgressDialog
ますが、タスクが正常に完了したら、どうすれば を強制終了して新しいアクティビティを開始できるのでしょうか? メソッドで新しいアクティビティを開始しようとしましたが、onPostExecute(..)
うまくいかないことがわかっています。
AsyncTask のコンストラクターで UI スレッド アクティビティを引数として渡してもうまくいかないようでした。
私はNullPointerException
何かを逃しているかもしれませんが、それは私にとってはうまくいきませんでした。
android - HTCSenseのAsyncTaskバグ
私はHTSセンスでHTCヒーローを使用しています。
AsyncTaskがexecute()でdoInBackgroundメソッドを実行しないことがあるという経験があります。
これは私のヒーローにのみ表示されます。誰かが同じ問題に遭遇しましたか?
/マーティン
java - Javaタイマー-呼び出された関数が完了していません!
だから私はその中にTimerTask task
関数を呼び出していますonTimerComplete()
run()
onTimerComplete()
次のようになります。
私はを作り、Timer t
私はでスケジュールTimerTask
しますt.schedule(task, 2000);
問題は、タイマーが切れてタスクが実行されたonTimerComplete()
が、その関数が終了しない場合です。実行されますmyFunc1()
が、終了することも、呼び出すこともありませんmyFunc2()
ただし、onTimerComplete()
直接電話をかけると、すべてが機能します。
ここでの取引は何ですか?
java - AsyncTask で HttpClient を使用してデータ (responsebody) をフェッチし、AsyncTask 外のデータを UI スレッドに返す
基本的には、トピックに書いたことをどのように実行できるか疑問に思っています。AsyncTask に関する多くのチュートリアルを見てきましたが、機能させることができません。ユーザーがそこに入力したものを取得し、アプリケーションが検索して結果を表示するための URL クエリにする小さなフォーム (EditText) があります。
私の主な活動では、responseBody という文字列があります。次に、ユーザーが検索ボタンをクリックすると、検索機能に移動し、そこから asyncdata を開始する URL を使用して GrabUrl メソッドを呼び出し、そのプロセスが終了すると、onPostExecute メソッドは関数 activity.this.setResponseBody(content を使用します。 )。
これは、私のコードが最も重要な部分で単純化されたように見えるものです (私は思います)。
android - ProgressDialog が外部 AsyncTask で機能しない
ProgressDialog を機能させるには、AsyncTask を Activity クラス内の内部クラスにする必要があると考え始めています。真実?[かなり後で編集されました...答えは False で、これがバグなのか何なのかわかりません。Android1.5を使用しています。サービスについて調べてみます。]
データベースを使用して情報を操作する活動があります。データベースにデータが入力されていれば、すべて問題ありません。データが入力されていない場合は、Web サイトから情報をダウンロードし、データベースにデータを入力してから、入力されたデータベースにアクセスして onCreate のビューを完成させる必要があります。
問題は、AsyncTask スレッドがデータベースへのデータの取り込みをいつ終了したかを判断する手段がないことです。次の強制終了エラー メッセージが表示されます。申し訳ありません。アプリケーションが予期せず停止しました。[Force Close] ボタンをクリックすると、バックグラウンドの AsyncTask スレッドが引き続き機能し、データベースにデータが入力され、すべてが正常に機能します。
そのエラーメッセージを取り除く必要があり、これを行う方法について助けが必要です. ここにいくつかの疑似コードがあります:
別のファイルで:
エミュレータからのスタック トレースは次のとおりです。
私は何を間違っていますか?
スノーフレークさん、
試した:
Activity.this はエラーとしてフラグが立てられています: タイプ Activity の囲んでいるインスタンスはスコープ内でアクセスできません
FillDB が Activity を拡張し、AsyncTask を拡張する FillDB 内にプライベート クラスを作成する必要があると考えていますか? それはうまくいきません。FillDB アクティビティがいつ開始されるかは保証されず、完了時に AsyncTask から結果が返されないため、startActivityForResult を使用できません。
更新:呼び出し元のクラスにプライベート クラスを作成しようとしました。まだ ProgressDialog を表示できません。エラーの 1 つ: ウィンドウを追加できません -- トークン null はアプリケーション用ではありません。どのトークンが参照されているのかわかりません。
android - AsyncTask、RejectedExecutionException、およびタスク制限
AsyncTaskを使用して、リモートサーバーから多数のサムネイルを取得し、それらをグリッドビューに表示しています。問題は、グリッドビューに一度に20個のサムネイルが表示されるため、20個のAsyncTaskが作成され、サムネイルごとに1つずつ20回の実行が開始されることです。
RejectedExecution
コードで例外が発生します。AsyncTaskが一度にキューに入れることができるタスクの数に制限があることをどこかで読んだことを思い出します。私はそれにぶつかっているかもしれません。このバーは持ち上げられましたか?
この制限を増やす方法はありますか?この例外を無視しても安全ですか?(空のcatch(RejectedException e){}
ブロックを使用することにより)
このコードはAndroid1.6エミュレーターで実行しており、コードのAPIレベル(minSDKVersionは3)です。[編集:SDKおよびAPIレベルの情報を追加]
android - Android 1.5:get()メソッドが呼び出されたときにAsynctask doInBackground()が呼び出されない
非同期タスクの実行方法に問題が発生しています。問題のコードは次のとおりです。
ここで行っているのは、新しいasynctaskオブジェクトを作成し、それをfirstTaskに割り当ててから、実行することです。次に、最初の非同期タスクが完了したときに別の非同期タスクを起動し、成功値(この場合は1)が返されることを確認します。これはAndroid2.0以降で完全に機能します。ただし、Android 1.5でテストしていると、問題が発生し始めます。上記のコードは最初の非同期タスクを実行しますが、onPreExecute()が呼び出されているにもかかわらず、doInBackground()が呼び出されることはありません。get()メソッドを使用せずに最初のタスクを実行する場合は、doInBackground()が呼び出され、すべてが期待どおりに機能します。今を除いて、最初のタスクが正常に完了したかどうかを判断して、2番目のタスクに実行を指示する方法がありません。これはAndroid1.5のasynctaskのバグであると想定しても安全ですか?特にAPI以降(https://developer.android.com/reference/android/os/AsyncTask.html#get%28%29)は、getメソッドがAPI 3以降に実装されていることを示しています。これを修正する方法はありますか?または、最初のタスクが終了したことを確認する別の方法はありますか?
android - アクティビティが破棄されても AsyncTask は停止しません
が作成されたときに実行を開始し、バックグラウンドで処理を行うAsyncTask
オブジェクトがあります(最大 100 個の画像をダウンロードします)。Activity
すべて正常に動作しますが、理解できないこの独特の動作があります。
例: Android 画面の向きが変わると、Activity
が破棄され、再度作成されます。そのため、メソッドをオーバーライドしてonRetainNonConfigurationInstance()
、ダウンロードしたすべてのデータを .xml で実行して保存しますAsyncTask
。これを行う私の目的は、方向の変更中に破棄されて作成さAsyncTask
れるたびに実行しないようにするActivity
ことですが、ログでわかるように、前のAsyncTask
ものはまだ実行されています。(ただし、データは正しく保存されます)
AsyncTask
アクティビティのメソッドでキャンセルしようとしましonDestroy()
たが、ログはまだAsyncTask
実行中として表示されます。
これは本当に奇妙な動作であり、誰かが を停止/キャンセルする正しい手順を教えてくれたら本当にありがたいですAsyncTask
.