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() { @Override public void onReceive(Context context, Intent intent) { } };
邮箱:zz7zz7zz@163.com
微博:http://weibo.com/u/3209971935
android 内存泄露那些事情之游标、文件、网络连接、广播(四)
最新推荐文章于 2023-02-21 14:08:22 发布