私はAndroidアプリケーションでパフォーマンスを向上させるためにスレッドを使用しようとしました。私は私の見解のいくつかの設定を変更するこれらの方法でAndroidスレッド:スレッドからのビューを参照
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.play);
...
new Thread(new Runnable() {
public void run() {
makeList();
}
}).start();
new Thread(new Runnable() {
public void run() {
setChronometer();
}
}).start();
}
:onCreate
方法で は、私は2つのスレッドを開始しました。 (何の重いイベントはありません)
まずクロノメーター:
ListView
private void setChronometer(){
time.post(new Runnable() {
public void run() {
time.setFormat("Time: %s");
time.setBase(SystemClock.elapsedRealtime());
time.start();
}
});
}
第二:Chronometer
はmakeList()
での操作が行われていなかった はなく、正常に動作します
private void makeList(){
...
final ArrayAdapter<String> listAdapter = new ArrayAdapter<String>(...);
list.post(new Runnable() {
public void run() {
list.setAdapter(listAdapter);
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
....
}
});
}
..ので、私のListViewが動作していません!
私はまず
を活動の開始時に、ListViewコントロールとクロノメーターを定義することはそれほど重要であるので、私は活動がより速く起動すること(もっとperformatである)ことを、目的とし、スレッドでそれらを延期するという考えを持っていましたこれはいいアイデアですか?
第2に、私のリストビューが機能しないのはなぜですか?私が除外するときlist.post(new Runnable() {
それは働くが、私はそれがアンドロイドの良い方法ではないと思った。これで、ビューはスレッドから直接変更されます。
第3に、スレッドはいつ使うべきですかvs.View.post
?
ご協力いただきありがとうございます。あなたのView
sおよびListView
秒など - - だけで今までに、UIスレッド(つまりメインスレッド)によってアクセスされなければならない。覚えておくべき FireDragon
テキストにバッククォート( ')を使用しないでください。バックスティックはマークダウンで特別な意味を持つため、( ')を使用しないでください。 –