Androidのアクティビティが忙しくてTextViewテキストを設定できませんか?
-
27-10-2019 - |
質問
SQLiteDBをhttpクエリのエントリで埋める関数があります: ジェネラコディセタグプレ
私がやろうとしていることは、手順が始まる前に(私のコードの最初の「try {..」の前に)私のアクティビティにテキストビューのテキストを設定することです。 しかし、私の活動は忙しくてデータを取得できないため、テキストは変更されません(私は思います。他に説明はありません。)
何か提案はありますか?
ありがとう、 prexx
更新 '' AsyncTaskからデータを取得する '' ジェネラコディセタグプレ
私の非同期タスク: ジェネラコディセタグプレ
解決
コードのビジー部分を別のスレッドに入れます。
AsyncTask ユーティリティをご覧ください
AsyncTask.execute()
の直後にtextview.setText("foo")
を呼び出すと、uは問題ありません:)
よろしく
コードサンプルによる更新: ジェネラコディセタグプレ
重要なのは、ビジー状態のすべてのコードを、別のスレッドで実行されるdoInBackGround
メソッドに入れることです。すべてのUIの変更は同じUIスレッドで行う必要があり、これは同じUIスレッドで実行されるonPostExecute
メソッドで行うことができます
他のヒント
TextViewでinvalidate()を呼び出そうとすることができます。ただし、非同期タスクを使用することは、大量のデータをロードする方法のベストプラクティスです。これにより、ユーザーの操作UIコントロールが中断されることはありません。
「忙しすぎる」とは関係ありませんが、メソッドが戻ったときにのみテキストが設定されるという事実とは関係ありません。そして、あなたのネットワーキングでは、これは遅れます。
ところで。UIスレッドのHoneycombネットワークでは、例外がスローされ、アプリが強制終了されます。