Android 选择文件、拍照等需要注意的问题

来源:互联网 发布:编写java 用什么软件 编辑:程序博客网 时间:2024/06/05 07:07

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.NullPointerException06-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的值发生了变化,解决方法可以按照我上面说的思路去解决。
原创粉丝点击