程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> bug-Android拍照onActivityResult的奇怪BUG

bug-Android拍照onActivityResult的奇怪BUG

編輯:編程解疑
Android拍照onActivityResult的奇怪BUG

這個BUG是一個很奇怪的問題,調用系統相機拍照(在別人的手機上還有美顏相機,美顏相機很容易出這個問題,系統相機不太容易出)
第一次遇到這種特別奇葩的問題,完全跟蹤不到,無論如何都沒有任何錯誤輸出,沒有任何提示無征兆的閃退。
具體就是傳入一個指定文件作為拍照文件。如下:

         Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        if (picturesUploadAndEditView != null){
            picturesUploadAndEditView.dissmissDialog();
        }
        tempPhotoPath = getTempImage();
        if (tempPhotoPath == null || tempPhotoPath.trim().equals("")){
            Toast.makeText(MyApplication.getInstance(), getResources().getString(R.string.sd_error), Toast.LENGTH_LONG);
            return;
        }
        File tempFile = new File(tempPhotoPath);
        Uri imageUri = Uri.fromFile(tempFile);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
        startActivityForResult(intent, ACTION_TAKE_PHOTO);

getTempImage()是一個自動生成照片保存路徑的方法。
但是拍照完畢後 大概有20%左右幾率,程序會直接閃退。經過調試發現是tempPhotoPath變成了null.加了try catch捕獲異常並加Toash提示卻無效,Toash根本不出程序就直接閃退了。後來我甚至把整個onActivityResult都加try裡面了,但是還可能閃退,奇怪的是,閃退沒有任何的錯誤輸出,後來我在代碼裡逐行加調試輸出跟蹤,發現只要執行了return,就沒有然後了,執行完了,程序不是回到原來的地方而是閃退出去,沒報錯信息。後來加了UncaughtExceptionHandler試圖捕獲錯誤輸錯卻根本沒進入到那裡面去。求解,徹底沒有任何思路了。

最佳回答:


測試了半天,經過查找資料終於發現問題。
在調用相機過後,拍照時候可能原來的應用已經被回收了。尤其是同事用美顏相機測試,可能占用內存過大,直接kill掉了。
我發現在這種情況下,返回原activity的onActivityResult,返回數據都正常的,照片也確實拍到了找得到,只是原來activity內的成員變量都沒了,或者說,整個application貌似都銷毀了,所有數據都沒了。
所以看似好像就是程序徹底閃退一樣。其實並沒有發生異常,只是APP都沒了還玩個毛線啊。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved