Using toast inside timertask

前端 未结 4 675
迷失自我
迷失自我 2021-01-20 08:35

Found someone has similar issue online here.

This doesn\'t work:

Timer t = new Timer(false);
t.schedule(new TimerTask() {
@Override
public void run()         


        
4条回答
  •  难免孤独
    2021-01-20 09:31

    Using Timer starts a new thread, I suppose that thread does not have access to getApplicationContext. The proper way to do it is to use Handler and call the postDelayed method of the Handler - which does not start a new thread.

    Read about this: http://developer.android.com/resources/articles/timed-ui-updates.html

    The link you posted has a working example, which is the proper way to do it:

    final Context ctx = this;
    Handler mHandler = new Handler();
    
    Runnable
    makeToast = new Runnable() {
        public void run() {
            Toast.makeText(ctx, "msg", Toast.LENGTH_LONG).show();
        }
    };
    mHandler.postDelayed(makeToast, 1000);
    

提交回复
热议问题