现在的位置: 首页 > 综合 > 正文

Android小技巧心得总结

2013年08月20日 ⁄ 综合 ⁄ 共 963字 ⁄ 字号 评论关闭

1.最好只在Activity中控制Bitmap的对象,虽然有BitmapFactory.decodeFile(String path)方法,最好不要在activity之外使用,因为你不知道什么时候这个非activity对象结束,Bitmap不用了必须要recyle,而在Activity中的好处是在onDestory()方法中直接回收即可,且不用担心其他地方还在使用,这里却已经回收了这类问题的发生。

2.涉及到拍照或者取相片等调用外部程序的时候,最好在当前Activity中做好防护,涉及两个函数  protected void onSaveInstanceState(Bundle outState)  和protected void onRestoreInstanceState(Bundle savedInstanceState) ,前者保存,后者提取,重写它们。为什么要这样做呢?因为有的android机器上调用拍照等外部程序后回到本Activity后会先执行到ondestory(),然后重新执行onCreate()流程,这有时候是一个很蛋疼的问题,重新来了一遍,所改变的数据可以都会被重新初始化了。

连带着说一个另外的问题,可能有人会遇到,程序中有拍照程序的时候有可能会遇到这个问题:

06-07 22:53:59.650: ERROR/AndroidRuntime(3935): Caused by: java.lang.NullPointerException
06-07 22:53:59.650: ERROR/AndroidRuntime(3935):     at java.io.File.fixSlashes(File.java:205)
06-07 22:53:59.650: ERROR/AndroidRuntime(3935):     at java.io.File.init(File.java:189)
06-07 22:53:59.650: ERROR/AndroidRuntime(3935):     at java.io.File.<init>(File.java:139)

原来是new File(path),path == null.为什么会这样呢?path是事先生成好了,加些打印可以看到去拍照前和拍照后此path的值发生了变化,解决方法可以按照我上面说的思路去解决。

抱歉!评论已关闭.