2013-11-28 150 views
16

我正在處理幾個Phonegap項目。在其中一些我使用的相機功能。Phonegap相機android殺死科爾多瓦

我這個問題(從PhoneGap的文檔)百思不得其解:

的Android怪癖

Android使用意圖來啓動設備上的攝像頭活動 捕捉圖像,而在手機上使用內存不足,科爾多瓦活動 可能會死亡。在這種情況下,圖像可能不會出現在恢復時,科爾多瓦活動 。

我在我的一個測試設備上不斷有這個問題(HTC One X)。它很滿,很好測試這個。

我注意到有一個替代插件:https://code.google.com/p/foreground-camera-plugin/這個問題。但我儘量避免使用插件......(可輕鬆移植到其他平臺)。 它可用高達Phonegap 2.4.0和我正在使用Phonegap 2.9.0

我已經使用文件URI而不是數據(以避免內存問題)。

我的問題是:有人知道Android何時決定殺死其他活動(如Cordova,這是Phonegap非常需要的)。在什麼級別的空閒內存? (百分比,MB)。所以我可以提前檢查並警告用戶。

當然我希望這個問題得到解決...但它似乎並沒有很快得到解決....第一句話

編輯我已經無意拆分真正的問題,我發現這不是真的可能。這是Android和Phonegap之間的事情。我只需要知道是否有可能警告用戶會發生這種情況。因此,用戶可以在繼續之前殺掉其他一些應用程序...那麼這是什麼時候發生的?什麼時候android認爲沒有足夠的內存來讓這件事發生?這是我的問題。

編輯2013 11月29日

因爲AustinAllover給出的鏈接,我現在知道這是不是隻是一個PhoneGap的問題... Android相機似乎殺死過少的情況下,所有Java應用程序內存...所以這個問題比Phonegap /科爾多瓦更通用...

+0

@AustinAllover:我不認爲我理解你的問題,或者你是我的問題。 Cordova(phonegap)應用程序被android殺死(因爲內存問題),在這種情況下沒有回調。照片拍攝後,PhoneGap應用程序從頭開始......沒有任何事情發生之前的知識.... –

+1

這個問題有一些有趣的答案... http://stackoverflow.com/questions/8368091/phonegap -camera-restarts-the-application – AustinAllover

+0

謝謝你,相當有用....雖然最高的評價去我的問題中提到的插件(它支持,直到phonegap 2.4.0)此選項可能是有用的:但只有當作爲測試開發人員:「開發人員選項」稱爲「不要保留活動」。 –

回答

1

不知道是否存在你的問題的一個很好的答案,但我會嘗試。

當應用程序被殺死以釋放內存時,這取決於很多因素。首要和主要因素是相機活動需要運行多少。 相機應用程序本身是在大多數設備上(儘管它變化)大約10MB。這是應用程序在內存中的大小,而不是運行該活動時所需的大小,這在邏輯上會更大一些。它還取決於相機本身以及存儲實際照片所需的內存量,假設照片在存儲時大約爲4MB,並且大約20MB。這給我們一個近似的上限30MB爲應用程序運行,雖然是猜測,我會稍後檢查並編輯它。

有關內存一個很好的參考到Android,你可以在這裏找到https://01.org/android-ia/user-guides/android-memory-tuning-android-5.0-and-5.1 有關他們的意見,總是有500MB或更多的內存來運行應用程序,這當然是你正在運行的所有應用程序,而不是一個具體的應用。

比GC開始從內存中移除應用程序的時候,這種情況非常接近內存的實際邊界,當少於5%仍然是空閒的時候,這個值通過我自己的實驗是非常具有實際意義的。首先它殺死仍在緩存中但不再需要的應用程序,只是作爲最後的手段殺死了活動的應用程序。

我的假設是你的應用程序會在大約50MB的內存空間內被殺死,但我必須強調這裏有很多假設,並且沒有通用的方法來告訴你每種設備的一個很好的答案,相機和Android的每個版本。

希望它有幫助,恐懼它沒有。

+0

感謝您的回答。真正的解決方案可能必須來自android開發人員...如果他們只是檢查哪個進程在殺死之前啓動了攝像頭以釋放存儲空間....現在並不在此項目上工作,如您所述,無法給予一個真實的答案。但是你給出了一些有關金額的好跡象。 –

1

嘗試查找不啓動系統相機應用程序的插件。相反,使用自定義攝像頭活動只具有有限的功能來減少內存使用量。

相關問題