在后台进程弹Toast,使用方案有:由UI线程传入一个Activity參数、View參数或者Handler參数,使用Activity.runOnUiThread(Runnable)、View.post(Runnable)或者Handler.sendMessage()的方法。
这样做有可能引发内存泄露。避免内存泄露的方案,使用Handler.post()和Handler.obtainMessage().sendToTarget():
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 |
new Thread(){ @Override public void run(){ // Looper.prepare(); new Handler(Looper.getMainLooper()).post(new Runnable() { @Override public void run() { Toast.makeText(getApplicationContext(),"test1",Toast.LENGTH_SHORT).show(); } }); } }.start();
new Thread(){ @Override public void run(){ // Looper.prepare(); new Handler(Looper.getMainLooper()){ @Override public void handleMessage(Message msg){ Toast.makeText(getApplicationContext(),"test2",Toast.LENGTH_SHORT).show(); } }.obtainMessage().sendToTarget(); } }.start();
|