これは一般的なJavaの質問であり、Androidの最初のものではありません。メインスレッドのコードをセカンダリスレッドから実行していますか?
私は、セカンダリスレッドのコンテキストから、メインスレッドでコードを実行する方法を知りたいと思います。たとえば、次のように
new Thread(new Runnable() {
public void run() {
//work out pi to 1,000 DP (takes a while!)
//print the result on the main thread
}
}).start();
そういったこと - 私はあなたが何かをプリントアウトするためにメインスレッドである必要はありませんJavaで以来、私の例は少し貧弱であると認識し、そのスイングもイベントキューを持っていますしかし、実行する必要のある一般的な状況では、バックグラウンドスレッドのコンテキストでメインスレッドでRunnableを実行する必要があります。
EDIT:比較のためには - ここで私はObjective-Cでそれを行うだろう方法は次のとおりです。事前に
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0UL), ^{
//do background thread stuff
dispatch_async(dispatch_get_main_queue(), ^{
//update UI
});
});
ありがとう!
ああ、実際には、この種のスレッドは、バックグラウンドスレッドを待っているのでメインスレッドがブロックされているので、バックグラウンドスレッドを使用する目的を破ると思います。それはかなりきちんとした仕組みのように見えます!私は今すぐキューについてもっと読むつもりです! – Javawag
あなたは確かにメインスレッドが他の仕事をしているだけでなく、何もしないで間隔でキューをチェックすることができます。しかし、ある時点では自家製の価値があるのを止めるSwingは完全に良いツールを提供しています:) – Affe
実際には、私がやっていることについてはかなり良いアイデアです - プロジェクトが実際に書かれた単純なゲームなのでSwingを使用していませんSlick2dエンジンを使用してください(それ以外の場合は正しいです;私はSwingの組み込みツールを使用します) – Javawag