Android 欢迎页TimerTask的使用,及注意事项

错误的写法:

会报java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()这个错误

原因是
在Android中不允许Activity里新启动的线程访问该Activity里的UI组件,这样会导致新启动的线程无法改变UI组件的属性值。

  TimerTask timerTask=new TimerTask() {
            @Override
            public void run() {
                Toast.makeText(MainActivity.this, "你好", Toast.LENGTH_LONG).show();
//                Intent intent=new Intent(MainActivity.this,OtherActivity.class);
//                startActivity(intent);

            }
        };
        //设置时间长短
        Timer timer=new Timer();
        timer.schedule(timerTask, 3000);

正确的写法:

       TimerTask timerTask=new TimerTask() {
            @Override
            public void run() {
//                Toast.makeText(MainActivity.this, "你好", Toast.LENGTH_LONG).show();
//                Intent intent=new Intent(MainActivity.this,OtherActivity.class);
//                startActivity(intent);

                Message message=mhander.obtainMessage();
                mhander.sendEmptyMessage(0);
            }
        };
        //设置时间长短
        Timer timer=new Timer();
        timer.schedule(timerTask, 3000);
    }


  private Handler mhander=new Handler(){
      @Override
      public void handleMessage(Message msg) {

                Toast.makeText(MainActivity.this, "你好", Toast.LENGTH_LONG).show();
      }
  };



你可能感兴趣的:(Android开发)