[置顶] android 内存泄露那些事情之游标、文件、网络连接、广播(四)
16lz
2021-01-26
android产生内存泄露的不良代码很多,数据库操作,忘记关闭游标;文件操作,忘记关闭输入输出流;网络操作,忘记关闭网络连接与输入输出流;
动态注册广播忘记反注册广播等等。
1.数据库操作,关闭游标。
Cursor cursor=null;try {//TODO...} catch (Exception e) {e.printStackTrace();} finally{if(null!=cursor){cursor.close();cursor=null;}}2.文件操作,关闭输入输出流。
FileOutputStream fos=null;try {fos = new FileOutputStream(destFilePath);int readCount = 0;int len = 1024;byte[] buffer = new byte[len];while ((readCount = in.read(buffer)) != -1){fos.write(buffer, 0, readCount);}fos.flush();} catch (Exception e) {e.printStackTrace();}finally{try {if (null != fos){fos.close();fos = null;}} catch (Exception e2) {e2.printStackTrace();}try {if (null != in){in.close();in = null;}} catch (Exception e3) {e3.printStackTrace();}}3.网络连接,关闭连接与输入输出流。
HttpURLConnection mHttpconn=null;try {//TODO ...} catch (Exception e) {e.printStackTrace();}finally{if(null!=mHttpconn){mHttpconn.disconnect();mHttpconn=null;} }4.注册广播,需要反注册广播。
/** * 注册广播 */private void register(){ IntentFilter filter = new IntentFilter(); filter.addAction("your action............"); registerReceiver(mReceiver, filter); }/** * 反注册广播 */private void unRegister(){ unregisterReceiver(mReceiver); }/** * 广播 */private BroadcastReceiver mReceiver=new BroadcastReceiver(){@Overridepublic void onReceive(Context context, Intent intent) { }};邮箱:zz7zz7zz@163.com
微博:http://weibo.com/u/3209971935
更多相关文章
- 关于android.view.WindowLeaked(窗体泄露)的解决方案
- Android(安卓)最简单的应用间跳转小结
- Android(安卓)高德地图 INVALID_USER_KEY 错误解决方案
- 据说程序员是最爱学习的群体,IT男都知道,这个行业日新月异,必须不断
- Android(安卓)Studio 真机调试vivo系列手机安装失败处理
- android默认关闭Location服务及关闭锁屏功能
- Android(安卓)4.4 Kitkat Phone工作流程浅析(九)__状态通知流程
- Android(安卓)调用本地通讯录,广播接收
- 看黑马安卓基础教学视频总结(广播)