Android计时器加弱引用
来源:互联网 发布:怎么在淘宝找客户资料 编辑:程序博客网 时间:2024/05/21 08:59
package com.example.ttt;import java.lang.ref.WeakReference;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.util.Log;import android.widget.Toast;public class MainActivity extends Activity { /** * 网页链接超时时长(秒) */ private static final int TIME_OUT =5; private MyHandler mHandler; /** * * @author dell * *延伸:什么是WeakReference? *WeakReference弱引用,与强引用(即我们常说的引用)相对,它的特点是: *GC在回收时会忽略掉弱引用,即就算有弱引用指向某对象,但只要该对象没有被强引用指向(实际上多数时候还要求没有软引用,但此处软引用的概念可以忽略), *该对象就会在被GC检查到时回收掉。对于下面的代码,用户在关闭Activity之后,就算后台线程还没结束,但由于仅有一条来自Handler的弱引用指向Activity, *所以GC仍然会在检查的时候把Activity回收掉。这样,内存泄露的问题就不会出现了。 * *弱引用-->随时可能会被垃圾回收器回收,不一定要等到虚拟机内存不足时才强制回收。要获取对象时,同样可以调用get方法。 *简单来说,就是只要使用了WeakReference,GC在检查的时候就会回收 */ private static class MyHandler extends Handler { private WeakReference<MainActivity> mActivity; public MyHandler(MainActivity activity) { mActivity = new WeakReference<MainActivity>(activity); } @Override public void handleMessage(Message msg) { MainActivity activity = mActivity.get(); if (activity == null) { return; } switch (msg.what) { case 1: Log.d("myf", "==");// 第一种情况 break; case 2:// 第二种情况 Toast.makeText(activity, "有", 3).show(); break; default:// 其他 break; } } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mHandler = new MyHandler(this); CountdownThread countdownThread=new CountdownThread(); countdownThread.start(); } /** * 倒计时线程类 * @author dell * */ class CountdownThread extends Thread { /** * 判断该线程是否继续 */ private boolean isTrue = true; /** * 停止该线程 */ public void stopRun() { this.isTrue = false; } public void run() { int time = 1; while (time <= TIME_OUT && isTrue ) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } time++; Message msg = new Message(); msg.what = 1; mHandler.sendMessage(msg); if (time >= TIME_OUT) { Message msg2 = new Message(); msg2.what = 2; mHandler.sendMessage(msg2); } } } }}
0 0
- Android计时器加弱引用
- Android 计时器
- android-计时器
- android 计时器
- android 计时器
- android 计时器
- Android 计时器
- Android计时器
- Android - 计时器
- Android 计时器
- Android计时器
- Android 计时器
- Android计时器
- android 计时器
- Android 计时器
- android 计时器
- Android计时器
- Android计时器
- DrawerLayout实现侧滑菜单
- POJ2488==DFS+路径输出+字典序排列
- ITer感悟
- lcs hdu1503 Advanced Fruits
- 用户名不在sudoers文件中,此事将被报告。
- Android计时器加弱引用
- 用 Java 实现断点续传 (HTTP)
- 有空就刷刷
- swift
- Java 下载支持断点续传服务端
- Linux gcc rpm安装以及文件(非yum安装)
- Cloud Insight 和 BearyChat 第一次合体,好紧张!
- Java中的字符集编码入门-增补字符
- Python的zip函数