android - 拍照导致Activity 退出
伊谢尔伦
伊谢尔伦 2017-04-17 16:48:44
[Android讨论组]
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(2)
ringa_lee
 /**
  * 保存相册参数
  * 说明:对于配置低的手机,开启照相机时,
  * 当前activity会被回收,导致再次返回该activity时,原先保存
  * 的变量被重新初始化,导致程序无法运行,造成崩溃。
  * 此处需要记录相关变量信息,如果activity异常退出,
  * 再次进入时调用onRestoreInstanceState函数就可以恢复这些变量的值。
  */
  
 @Override
 protected void onSaveInstanceState(Bundle outState) {
     super.onSaveInstanceState(outState);
     Log.i(TAG, "onSaveInstanceState");
 /* 保存相片路径 */
 outState.putString("mCurrentSelectPictureCachePath", mCurrentSelectPictureCachePath);   
 }


 /**
  * 恢复相册参数
  */
 @Override
 protected void onRestoreInstanceState(Bundle savedInstanceState) {

     super.onRestoreInstanceState(savedInstanceState);
     Log.i(TAG, "onRestoreInstanceState");
     /* 恢复当前相片存储路径 */
     mPictureCachePath = savedInstanceState.getString("mCurrentSelectPictureCachePath", mCurrentSelectPictureCachePath);

 ......
 }
 

这两个方法并不是Activity每次都会调用的,我们注意到onCreate和onRestoreInstanceState都有个Bundle类型的参数,那么这个参数是谁传来的呢?肯定是onSaveInstanceState传来的。

当我们的Activity在未经我们自己finish的情况下被结束(没有被回收也会执行onSaveInstanceState),onSaveInstanceState方法就会被调用。此时我们就可以利用outState参数来存储我们的数据,当onCreate或者onRestoreInstanceState(只有Activity被真正回收后才调用)时,将这些数据拿出来重新赋值给我们的成员变量,这样,就算是Activity被销毁了,我们依然可以重新获得相关变量的值。

PHPz

有可能是启动相机拍照时占用内存过大,导致LMK把后台的进程给杀掉了

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号