您的位置:首页 > 理论基础 > 计算机网络

android 内存泄露那些事情之游标、文件、网络连接、广播(四)

2013-10-04 20:46 435 查看
android产生内存泄露的不良代码很多,数据库操作,忘记关闭游标;文件操作,忘记关闭输入输出流;网络操作,忘记关闭网络连接与输入输出流;
动态注册广播忘记反注册广播等等。

1.数据库操作,关闭游标。

		Cursor cursor=null;
try {
//TODO...

} catch (Exception e) {
e.printStackTrace();
} finally{
if(null!=cursor)
{
cursor.close();
cursor=null;
}
}


2.文件操作,关闭输入输出流。

[code] 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[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: