我有一个Android应用程序,我想在相当多的重载数字运算开始时显示“正在处理...”消息,然后在处理完成时显示“已完成”。我尝试这样的事情:
TextView T = (TextView)findViewById(R.id.TheStatusView);
T.setText("Running");
T.invalidate();
// lots of number crunching
T.setText("Completed");
正如你们当中可能已经猜到的那样,“运行”消息永远不会出现,因为应用程序忙于处理数字运算以重新绘制TextView。
在ASP.NET中,我会做类似的事情:
T.Text = "Running";
T.Refresh();
Application.DoEvents();
并且文本将被刷新。 在Android中是否存在等价物,或者我几乎被卡住了?
答案 0 :(得分:2)
对于那些在家里玩并希望做同样事情的人来说,这就是我的所作所为:
TextView T = (TextView)findViewById(R.id.statusTextView);
new Thread(new Runnable() {
public void run() {
T.post(new Runnable() {
public void run() {
T.setText("Processing Part 1");
}
});
DoTheHardcoreProcessing_Part1();
T.post(new Runnable() {
public void run() {
T.setText("Processing Part 2");
}
});
DoTheHardcoreProcessing_Part2();
T.post(new Runnable() {
public void run() {
T.setText("Finished");
}
});
}
}).start();
这将按顺序:
(1)显示"处理第1部分"
(2)执行DoTheHardcoreProcessing_Part1()
中的代码(3)显示"处理第2部分"
(4)执行DoTheHardcoreProcessing_Part2()
中的代码(5)显示"已完成"