2011-06-23 56 views
0

我有一個活動,它允許我用相機拍攝圖像,並且我想將此圖像作爲Intent附加發送到父活動。但是,如果我真的試圖將圖像添加到意圖中,那麼突然間撥打電話似乎永遠不會執行任何操作,並且我的活動永遠不會關閉。Android:某些意圖附加功能阻止活動完成

下面是我的一些代碼:

public void onPictureTaken(byte[] imageData, Camera c) 
    { 
     if (imageData != null) { 
      // Send the result as a byte array 
      Intent intent = new Intent(); 
      intent.putExtra("imagedata", imageData); 
      setResult(RESULT_OK, intent); 
      finish(); 
     } 
    } 

奇怪的是,如果我註釋掉putExtra()呼叫,則它的所有工作正常(無圖像,當然)和我的活動關閉,我打父母的onActivityResult()回調。但是如果我離開線路,那麼活動永遠不會關閉,回調也不會觸發。

我已經嘗試在演員中加入更多瑣碎的東西,比如字符串,並且它都是完美的。 putExtra()被允許採取一個字節數組,我甚至嘗試將其包裝爲一個位圖併發送,但它也不起作用。我能想到的唯一的事情就是我只是不應該將一些大的東西傳遞給Intent,在這種情況下,我想我會嘗試將它寫入文件。這只是寫入文件應該比傳遞字節數組引用慢,這就是爲什麼我要這樣做。

任何想法?感謝提前:)

電話:三星Galaxy S API級別:7

回答

2

你不應該包括意圖演員中的圖像數據。澄清請參閱this thread。簡而言之,儘可能縮小您的Intent附加組件。

我建議將圖片存儲到SD卡,並將路徑傳遞到您的意圖文件中。

+0

非常感謝,我希望在兩個小時前發現該線程(Android開發新手)。對於我來說,將圖像寫入文件並將其直接讀回來似乎有點愚蠢 - 也許我應該使用單例來保存它,因爲我只希望圖像能夠持續用於應用程序生命週期?無論如何,感謝您的及時迴應:) – Adam

0

試試這個代碼

public void quit() { 
     int pid = android.os.Process.myPid(); 
     android.os.Process.killProcess(pid); 
     System.exit(0); 
    } 

,並使用退出()調用它;