[解決済み] android asynctaskがuiにコールバックを送信する [重複] 。
2022-04-29 06:44:48
質問
私は以下のasynctaskクラスを持っていますが、これはアクティビティの中にありません。アクティビティでasynctaskを初期化し、asynctaskが私のアクティビティに戻ってコールバックを報告するようにしたい。 それは可能ですか?それとも、asynctaskはアクティビティと同じクラスファイルでなければならないのでしょうか?
protected void onProgressUpdate(Integer... values)
{
super.onProgressUpdate(values);
caller.sometextfield.setText("bla");
}
こんな感じ?
解決方法は?
を作成することができます。
interface
に渡してください。
AsyncTask
(コンストラクタ内で)メソッドを呼び出します。
onPostExecute()
例えば
あなたのインターフェース
public interface OnTaskCompleted{
void onTaskCompleted();
}
あなたの活動
public class YourActivity implements OnTaskCompleted{
// your Activity
}
そしてAsyncTask。
public class YourTask extends AsyncTask<Object,Object,Object>{ //change Object to required type
private OnTaskCompleted listener;
public YourTask(OnTaskCompleted listener){
this.listener=listener;
}
// required methods
protected void onPostExecute(Object o){
// your stuff
listener.onTaskCompleted();
}
}
EDIT
この回答はかなり好評だったので、いくつか追加したいと思います。
Androidの開発を初めて行う場合。
AsyncTask
は、UI スレッドをブロックすることなく物事を動かすための高速な方法です。これはいくつかの問題を解決してくれますし、このクラスが動作する方法自体には何の問題もありません。しかし、それは以下のような意味を持ちます。
-
メモリリークの可能性。への参照を保持する場合、メモリリークの可能性があります。
Activity
ユーザが画面を離れた後(またはデバイスを回転させた後)でも、メモリ内に残ってしまいます。 -
AsyncTask
に結果を配信していない。Activity
もしActivity
はすでに破棄されています。このようなことを管理するために余分なコードを追加したり、操作を2回行わなければなりません。 -
の中ですべてを行う複雑なコードです。
Activity
Androidで十分に成長したと感じたら、次のページをご覧ください。 この記事 非同期処理を使ったAndroidアプリの開発には、この方法が適していると思います。
関連
-
[解決済み】Android 8:クリアテキストのHTTPトラフィックが許可されない
-
java.lang.NullPointerException: NULLオブジェクト参照で仮想メソッド......を呼び出そうとしました。
-
cygwinのダウンロード、インストールチュートリアル、およびCDTの「makeプログラムがパスに見つからない」バグの解消
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] Androidの「コンテキスト」とは何ですか?
-
[解決済み] グリッドレイアウトにおけるフリングジェスチャーの検出
-
[解決済み] Androidでファイルをダウンロードし、ProgressDialogで進捗を表示する。
-
[解決済み] AsyncTaskのAndroidサンプル
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
NetworkOnMainThreadException
-
アプリはGoogle検索でインデックスされません Androidmanifestのクソみたいな黄色い警告
-
エラーが発生しました。ArrayAdapter は、リソース ID が TextView である必要があります。
-
android block certificate validation CertPathValidatorException: 認証パスのトラストアンカーが見つかりません
-
GoogleMapと連携し、位置情報の取得が可能
-
Windowsのadbシェルでデータディレクトリにアクセスするとパーミッションが拒否される
-
WeChatとQQは、他のアプリのオープンリストに自分のアプリを追加し、ファイルパスを取得することができます
-
view.getRootView()の本当の意味とテストについて
-
Android studio 制約レイアウト ConstraintLayout
-
[解決済み] AsyncTaskは別のクラスなので、OnPostExecute()の結果をメインアクティビティに取得するにはどうすればよいですか?