0

こんにちは \Async onCreate でエラーが発生し続けます。これはコードと logcat トレースです。フィードバックをいただければ幸いです。スプラッシュ画面が実行され、ホーム画面が起動するとアプリが停止します

public class HomeActivity extends ListActivity {
4

2 に答える 2

2

doInBackground() はバックグラウンド スレッドで実行されます。したがって、バックグラウンド スレッドで UI を変更することはできません。ui スレッドで ui を変更または更新する必要があります。

http://developer.android.com/reference/android/os/AsyncTask.html

非同期タスクが実行されると、タスクは次の 4 つのステップを経ます。

  1. タスクが実行される前に UI スレッドで呼び出される onPreExecute()。このステップは、通常、タスクをセットアップするために使用されます。たとえば、ユーザー インターフェイスに進行状況バーを表示します。

  2. doInBackground(Params...) onPreExecute() が実行を終了した直後にバックグラウンド スレッドで呼び出されますこのステップは、時間がかかる可能性のあるバックグラウンド計算を実行するために使用されます。非同期タスクのパラメーターがこのステップに渡されます。計算の結果は、このステップによって返される必要があり、最後のステップに戻されます。このステップでは、publishProgress(Progress...) を使用して、進行状況の 1 つ以上のユニットを公開することもできます。これらの値は、UI スレッドの onProgressUpdate(Progress...) ステップで発行されます。

  3. onProgressUpdate(Progress...)。publishProgress(Progress...) の呼び出し後に UI スレッドで呼び出されます。実行のタイミングは未定義です。このメソッドは、バックグラウンド計算がまだ実行されている間に、ユーザー インターフェイスに任意の形式の進行状況を表示するために使用されます。たとえば、進行状況バーをアニメーション化したり、テキスト フィールドにログを表示したりするために使用できます。

  4. onPostExecute(Result) は、バックグラウンドの計算が終了した後に UI スレッドで呼び出されます。バックグラウンド計算の結果は、パラメーターとしてこのステップに渡されます。

doInbackground() で返された結果に応じて、runonuithread を使用するか、onPostExecute() で ui を更新します。

以下のリンクを確認してください

Android の doinbackground() で UI タスクを実行する

于 2013-04-15T10:00:00.157 に答える
2

のdoInBackgroundでビューを操作することは想定されていませんAsyncTask

于 2013-04-15T09:54:55.793 に答える