[解決済み] AsyncTask<arg1, arg2, arg3>に渡される引数は何ですか?
質問
ここに何を書けばいいのか、この引数の行き着く先がわからないのですが?具体的に何を書けばいいのか、どこに書けばいいのか?それとも、1,2,20を含めることができますか?
どのように解決するのですか?
GoogleのAndroidドキュメントによると、:
非同期タスクは、Params、Progress、Resultという3つの汎用型と、onPreExecute、doInBackground、onProgressUpdate、onPostExecuteという4つのステップで定義されています。
AsyncTaskの一般型.
非同期タスクが使用する型は以下の3つです。
Params, the type of the parameters sent to the task upon execution.
Progress, the type of the progress units published during the background computation.
Result, the type of the result of the background computation.
すべての型が常に非同期タスクで使用されるわけではありません。ある型を未使用とマークするには、単純にVoid型を使用します。
private class MyTask extends AsyncTask<Void, Void, Void> { ... }
あなたはさらに参照することができます。 http://developer.android.com/reference/android/os/AsyncTask.html
また、AsyncTaskの役割については、以下を参照してください。 サンカル・ガネーシュのブログ
さて、典型的なAsyncTaskクラスの構造は次のようなものです。
private class MyTask extends AsyncTask<X, Y, Z>
protected void onPreExecute(){
}
このメソッドは、新しいThreadを開始する前に実行されます。入出力の値はないので、変数の初期化など、必要だと思うことをすればよい。
protected Z doInBackground(X...x){
}
AsyncTask クラスの中で最も重要なメソッドです。メインスレッドとは別のスレッドでバックグラウンドで行いたいことをすべてここに置かなければなりません。ここでは入力値として型 "X "のオブジェクトの配列を持っています(ヘッダが見えますか?ヘッダーに"...extends AsyncTask "とありますが、これが入力パラメータの型です)そして、型 "Z "のオブジェクトを返します。
protected void onProgressUpdate(Y y){
}
このメソッドは、publishProgress(y) というメソッドを使って呼び出されます。これは通常、バックグラウンドで行っている操作の進行状況を示すプログレスバーのように、メイン画面に何らかの進行状況や情報を表示したい場合に使用されます。
protected void onPostExecute(Z z){
}
このメソッドは、バックグラウンドでの操作が終了した後に呼び出されます。入力パラメータとして、doInBackground メソッドの出力パラメータを受け取ります。
X型、Y型、Z型はどうなっていますか?
上の構造から推測できるように。
X – The type of the input variables value you want to set to the background process. This can be an array of objects.
Y – The type of the objects you are going to enter in the onProgressUpdate method.
Z – The type of the result from the operations you have done in the background process.
このタスクを外部のクラスから呼び出すにはどうすればよいのでしょうか。次の2行だけです。
MyTask myTask = new MyTask();
myTask.execute(x);
ここで、xは型Xの入力パラメータである。
タスクが実行されたら、その状態を「外」から確認することができます。getStatus()」メソッドを使ってね。
myTask.getStatus();
で、以下のようなステータスを受け取ることができます。
実行中 - タスクが実行中であることを示す。
ペンディング - タスクがまだ実行されていないことを示す。
終了 - onPostExecute(Z)が終了したことを示す。
AsyncTaskの使用に関するヒント
-
onPreExecute、doInBackground、onPostExecuteの各メソッドを手動で呼び出さないでください。これは、システムによって自動的に行われます。
-
AsyncTask を別の AsyncTask や Thread の内部で呼び出すことはできません。executeメソッドの呼び出しは、UI Threadで行う必要があります。
-
onPostExecuteメソッドはUIスレッドで実行されます(ここで、別のAsyncTaskを呼び出すことができます!)。
-
タスクの入力パラメータはObject配列で、好きなオブジェクトや型を入れることができます。
関連
-
AndroidStudio reports Could not resolve all artifacts for configuration ':app:classpath'.
-
アプリの実行エラー。ターゲットデバイスが見つからない問題
-
[解決済み] Androidのローテーションでアクティビティを再開する
-
[解決済み] Bitmapオブジェクトに画像を読み込む際にOutOfMemoryが発生する問題
-
[解決済み] Eclipseにプロジェクトをインポートした後に「Must Override a Superclass Method」エラーが発生する。
-
[解決済み] アプリケーションを終了することは嫌われますか?
-
[解決済み] グリッドレイアウトにおけるフリングジェスチャーの検出
-
[解決済み] 引数とパラメータの違いは何ですか?
-
[解決済み] Androidのアクティビティライフサイクル - これらのメソッドは何のためにあるのか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
adb シェルがデバイスのオフラインを求めるプロンプトを表示する
-
java.lang.NullPointerException: NULLオブジェクト参照で仮想メソッド......を呼び出そうとしました。
-
[android studio]com.android.ide.common.process.ProcessException: aaptの実行に失敗しました
-
ジャークとして。起動アクティビティを特定できませんでした。デフォルトのアクティビティが見つかりません アクティビティ起動中のエラー
-
指定された子にはすでに親がいます。まず、その子の親に対して removeView() をコールする必要があります。
-
Android Nで報告されたエラーを解決する: android.os.FileUriExposedException: file:///storage/emulated/0/
-
GoogleMapと連携し、位置情報の取得が可能
-
エラータイプ 3 タイプエラー, Error: アクティビティクラス{}が存在しません。アクティビティ起動時のエラー 解決方法
-
WeChatとQQは、他のアプリのオープンリストに自分のアプリを追加し、ファイルパスを取得することができます
-
アンドロイドシェイプ、グラデーション、角丸、ボーダーラインの設定