是否有类似于ASP.NET的DoEvents()的Android?

时间:2014-03-20 02:05:20

标签: android asp.net

我有一个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中是否存在等价物,或者我几乎被卡住了?

1 个答案:

答案 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)显示"已完成"