在timertask中使用toast

new*_*erl 3 android

发现有人有类似的问题在线点击这里.

这不起作用:

Timer t = new Timer(false);
t.schedule(new TimerTask() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "msg", Toast.LENGTH_LONG).show();
}
}, 5000);
Run Code Online (Sandbox Code Playgroud)

但是,如果我在timertask之外实例化toast然后在里面显示它run,它就可以工作了.

我认为它可能与所谓的UI线程有关,

但究竟怎么样?

sil*_*lly 9

试试这个

Timer t = new Timer(false);
t.schedule(new TimerTask() {
@Override
public void run() {
       runOnUiThread(new Runnable() {
            public void run() {
                Toast.makeText(getApplicationContext(), "msg", Toast.LENGTH_LONG).show();
            }
        });

    }
}, 5000);
Run Code Online (Sandbox Code Playgroud)