首页 > 试题广场 >

某同学开发一个Android应用,他想在界面上用一个Text

[问答题]
某同学开发一个Android应用,他想在界面上用一个TextView控件显示当前的时间(图 1):

图 1
以下是他所编写的代码:
public class MainActivity extends Activity {
    private TextView timerTextView=null;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        timerTextView = (TextView)findViewById(R.id.tvTimer);
        Timer timer=new Timer();
        timer.scheduleAtFixedRate(new TimerTask() {
                public void run() {
                    //在TextView控件上显示当前时间
                    Date nowDate = new Date();
                    timerTextView.setText(nowDate.toLocaleString());
                }
            }, 0, 1000);//每隔一秒种更新显示文本
    }
}
可是程序运行时,Android报告以下错误(图 2):

图 2
请解释原因,并修改代码消除此BUG。
在程序中修改TextView的内容, 不能在非UI线程进行操作, 必须在UI线程中做操作, 
 timer.scheduleAtFixedRate(new TimerTask() {
                public void run() {
                    runOnUiThread(new Runnable{
                             public void run(){
                                        Date nowDate = new Date();
                                        timerTextView.setText(nowDate.toLocaleString());
                             }
                        });
                }
            }, 0, 1000);
发表于 2017-07-06 11:07:19 回复(0)

安卓多线程之间不可以直接访问临界资源吧?必须通过固定的接口?
我也是初学者,我去查个资料再补充。

发表于 2017-06-16 22:25:19 回复(0)