我想做这样的事情:
TextView myStatusLine = (TextView)findViewById(R.id.myStatusLine);
myStatusLine.setText("Start Processing");
doLotsOfNumberCrunchingHere()
myStatusLine.setText("Processing Done");
但是,当然,"开始处理"永远不会出现 我试过这个:
Runnable updateStatus = new Runnable() {
public void run() {
myStatusLine.setText("Start Processing");
}
};
theHandler.post(updateStatus);
doLotsOfNumberCrunchingHere()
myStatusLine.setText("Processing Done");
但这一次,"开始处理"是唯一出现的东西。 (" Processing Done"在此之前可能会非常简短地显示。)
如何让UI显示"开始处理"在调用doLotsOfNumberCrunchingHere()和" Processing Done"之前什么时候回来?
答案 0 :(得分:3)
你试过AsyncTask吗?
public class advice extends AsyncTask<Void, Void, Void>{
@Override
protected void onPreExecute() {
myStatusLine.setText("Start Processing");
}
@Override
protected Void doInBackground(Void... params) {
//your processing
return null;
}
@Override
protected void onPostExecute(Void result) {
myStatusLine.setText("Processing Done");
}}