Android Runnable与Handler和Thread的使用,Handler构造方法弱引用实现
生活随笔
收集整理的這篇文章主要介紹了
Android Runnable与Handler和Thread的使用,Handler构造方法弱引用实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
PS:在使用Runnable時,可能會內存泄露。Runnable是一個匿名內部類,因此它對當前Activity有一個隱式引用。如果Activity在銷毀之前,任務還未完成, 那么將導致Activity的內存資源無法回收,造成內存泄漏。那么該怎么解決這種問題呢?代碼如下,
? ? static class MyRunnable implements Runnable {
? ? ? ? @Override
? ? ? ? public void run() {
? ? ? ?//執行任務
? ? ? ? }
? ? }
使用 靜態內部類,避免了Activity的內存資源泄漏。
?
1、Runnable對象
Runnable runnable = new Runnable() {@Overridepublic void run() {Log.i("Lgq","runnable111"+Thread.currentThread().getName());textView.setText("aaaaaaaaaaa");} };2、Handler調用Runnable對象
Handler handler =new Handler(); handler.post(runnable);
03-22 15:21:49.950 9126-9126/com.tianxin.httpheader I/Lgq: runnable111main
3、Thread調用Runnable對象
Thread thread = new Thread(runnable,"abcc"); thread.start();03-22 15:21:49.936 9126-9222/com.tianxin.httpheader I/Lgq: runnable111abcc
?
4、handler構造方法弱引用實現
?
private Handler mHandler;?
mHandler = new InnerHandler(this);?
private static class InnerHandler extends Handler {private WeakReference<DetectActivity> mWeakReference;public InnerHandler(DetectActivity activity) {super();this.mWeakReference = new WeakReference<>(activity);}@Overridepublic void handleMessage(Message msg) {if (mWeakReference == null || mWeakReference.get() == null) {return;}DetectActivity activity = mWeakReference.get();if (activity == null) {return;}if (msg == null) {return;}switch (msg.what) {case MSG_INITVIEW:activity.start();break;default:break;}} }?
?
總結
以上是生活随笔為你收集整理的Android Runnable与Handler和Thread的使用,Handler构造方法弱引用实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js日期显示效果
- 下一篇: [100124]红楼梦:林黛玉与北静王【