关于android 系统选图crash问题的一些问题总结

1. 关于调用系统相册的 方式

    方式一、

 

	   Intent intent = new Intent(Intent.ACTION_GET_CONTENT);    
           intent.addCategory(Intent.CATEGORY_OPENABLE);   
           intent.setType("image/*");  
该方法弹出所有可以打开图片的工具 来提供打开的应用   

方式二、

 <span style="white-space:pre">	</span> Intent intent = new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
       该方法直接调用系统照相册 跳入系统相册选择界面

2.关于小内存手机选照片时候应用被系统 杀死的问题

    在小内存手手机里偶尔会出现一中现象就是,开发的应用在放入后台后,不就打开就会crash,而且总是报nullpointException 很多时候都是因为,应用的数据被系统释放。这个是时候用到的方法一般只有一个就是恢复! (当然如果你不用静态变量或许也可以)

	/**
	 * 保存状态
	 */
	@Override
	protected void onSaveInstanceState(Bundle outState) {
<span style="white-space:pre">		</span>//存储自己的数据
<span style="white-space:pre">		</span>outstate.putXXX()

<span style="white-space:pre">	</span>}
这个方法用来保存死之前的状态 也就是把死之前的数据进行备份到外部存储

/**
	 * 恢复状态
	 */
	@Override
	protected void onreStoreInstanceState(Bundle savedbudle) {
		//恢复自己的数据
	  xxx =	outstate.getXXX()

	}

3.关于选图后,打印out of memery 内存溢出错误,这是由于Bitmap.decode(path)方法引起的,这时候如果图片过大,很容易内存溢出,这时候不能直接读图片而是要通过:

//这个方法来读取

			{  Bitmap selectedBitmap = null;
				BitmapFactory.Options opts = new BitmapFactory.Options();
				opts.inJustDecodeBounds = true;
				BitmapFactory.decodeFile(selectedPathString, opts);//这里主要是用来计算合适的大小
				opts.inSampleSize =ImageCompressUtil.computeSampleSize(opts, -1, 2048 * 2048); //这里的2048*2048是最大尺寸 
				opts.inJustDecodeBounds = false;
				try {
					selectedBitmap = BitmapFactory.decodeFile(selectedPathString, opts);					
				 } catch (OutOfMemoryError err) {
			   }							
				
通过以上方法来读取大图那么 outof memery exception 就解决了!以上都是个人的一些见解!和网上搜到的东西!分享出来希望遇到 的人能少走弯路!



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章