Androidのアクティビティが忙しくてTextViewテキストを設定できませんか?

StackOverflow https://stackoverflow.com/questions/6332255

質問

SQLiteDBをhttpクエリのエントリで埋める関数があります: ジェネラコディセタグプレ

私がやろうとしていることは、手順が始まる前に(私のコードの最初の「try {..」の前に)私のアクティビティにテキストビューのテキストを設定することです。 しかし、私の活動は忙しくてデータを取得できないため、テキストは変更されません(私は思います。他に説明はありません。)

何か提案はありますか?

ありがとう、 prexx

更新 '' AsyncTaskからデータを取得する '' ジェネラコディセタグプレ

私の非同期タスク: ジェネラコディセタグプレ

役に立ちましたか?

解決

コードのビジー部分を別のスレッドに入れます。

AsyncTask ユーティリティをご覧ください

AsyncTask.execute()の直後にtextview.setText("foo")を呼び出すと、uは問題ありません:)

よろしく

コードサンプルによる更新: ジェネラコディセタグプレ

重要なのは、ビジー状態のすべてのコードを、別のスレッドで実行されるdoInBackGroundメソッドに入れることです。すべてのUIの変更は同じUIスレッドで行う必要があり、これは同じUIスレッドで実行されるonPostExecuteメソッドで行うことができます

他のヒント

TextViewでinvalidate()を呼び出そうとすることができます。ただし、非同期タスクを使用することは、大量のデータをロードする方法のベストプラクティスです。これにより、ユーザーの操作UIコントロールが中断されることはありません。

「忙しすぎる」とは関係ありませんが、メソッドが戻ったときにのみテキストが設定されるという事実とは関係ありません。そして、あなたのネットワーキングでは、これは遅れます。

ところで。UIスレッドのHoneycombネットワークでは、例外がスローされ、アプリが強制終了されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top