它可能看起来非常滑稽和愚蠢的问题..有花纹图案
我想看看周围的Runnable,线程,服务与Android应用程序意图服务的后台操作混淆。
所以我创建了一个活动,创建活动里面像,
public class ExectuableThread implements Runnable{
@Override
public void run() {
Log.e("current-thread", String.valueOf(Looper.getMainLooper().isCurrentThread())); // **Returning true**
btnDone.setText("will not work");
}
}
因此,在上述情况下按钮文本正在改变一个简单的线程。
不要紧,我打电话这样的:
Thread t = new Thread (new ExectuableThread());
t.run();
OR
Thread t = new Thread (new ExectuableThread());
t.start();
为什么我的按钮上的文字是,如果通过调用start()改变; - 当使用后台线程?
现在一个非常有趣的场景;如果我这样拖延2秒,
public class ExectuableThread implements Runnable{
@Override
public void run() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.e("current-thread", String.valueOf(Looper.getMainLooper().isCurrentThread()));
btnDone.setText("will not work");
}
}
然后,如果我调用start(),那么视图没有更新;在run()调用的情况下。它会工作。开始之间
差()和run()是明确的,但问题是相同的,为什么按钮文本正在更新如果线程是在后台。
我认为这将有助于您了解运行之间的差异()和start()方法 HTTP://javarevisited.blogspot 。在/ 2012/03 /差之间的启动和运行,method.html#axzz4ip9wGDe1 – santoXme
@santoXme感谢。这我明白,但会有所帮助如果你能纠正我的问题或回答。:) – Custadian