android java编程注意事项
2010-05-14 16:45:00 来源:WEB开发网1、创建了一个对象后:
(1)没有在适当的地方释放掉
(2)在应该释放的地方没有做释放操作
例如:下面一段程序:
m_progressDlg = ProgressDialog.show(this, getString(R.string.market),getString(R.string.is_visiting), true);
new Thread() {
public void run() {
boolean downloadOver = downloadwidgetInfo();
if (downloadOver) {
if(null != m_progressDlg)
m_progressDlg.dismiss();//该释放这个对象,如果不释放,应用会很容易出错。
if(flag)
startIntent();
finish();
} else {
Message msg = mHandler.obtainMessage(mUphoneMain.Download_Fail);
mHandler.sendMessage(msg);
}
}
}.start();
上面一段代码的隐患就在于else中没有释放progressDlg 对象。如果程序一旦出错,就会导致该progressDlg一直显示在屏幕上,使应用程序死在这个界面上。
2、逻辑上严重错误:
(1)如果一个activity是在应用程序中处于过渡的作用,例如主要做一些下载等工作。那么在这个activity中最好不要用Dialog相关的程序。如果有,这样会导致一旦此activity在联网或者做某些事情导致异常的时候,就会发出致命错误。因为容易出现这样一种情况:就是在应用程序挂掉的同时,通知了Dialog去在这个activity之上显示一个 Dialog。因为程序挂掉了,所以这个dialog就没有了activity上下文Context的载体。
例如:有三个activity如下:
activity1:入口
activity2:过渡,负责下载网络数据,如果下载失败,就跳出 dialog报错。如果成功就进入activity3.
activity3:
上面这个例子就会出现这种情况:activity2由于系统突然的异常但又突然的恢复后,有可能造成的activity2链接网络部分出现致命错误而被dalvic虚拟机kill掉activity2.而此时你的程序有可能捕获了异常,并将发送消息来启动一个异常dialog的提示框。因为dialog的Context上下文事activity2,但是activity2 此时被killed了。从而出现应用程序的异常终止。
(2)在new一个Thread的时候,要特别注意这个 Thread是否能被控制,或者是否要去控制。特别是在多个线程启动的时候,在android上很难像写java应用程序一样很容易的控制住线程。在多个线程启动的时候,一定要注意线程之间的逻辑。多个线程内部的程序的运行是否需要依赖其他线程内部的代码的功能的完成。
- ››JavaScript项目优化总结
- ››Android 当修改一些代码时,使用什么编译命令可以最...
- ››Android 如何添加一个apk使模拟器和真机都编译进去...
- ››Android 修改Camera拍照的默认保存路径
- ››Android 如何修改默认输入法
- ››android开发中finish()和System.exit(0)的区别
- ››Android手势识别简单封装类
- ››Java获取特殊目录或特殊值
- ››android中查看项目数字证书的两种方法
- ››Android中获取IMEI码的办法
- ››android 相机报错 setParameters failed
- ››Android重启运用程序的代码
更多精彩
赞助商链接