首页 文章

Phonegap相机android杀死了cordova

提问于
浏览
16

我正在研究几个Phonegap项目 . 在其中一些我正在使用相机功能 .

我对此问题感到困惑(来自Phonegap文档):

Android Quirks Android使用意图在设备上启动相机活动以捕获图像,而在内存较低的手机上,Cordova活动可能会被杀死 . 在这种情况下,当cordova活动恢复时,图像可能不会出现 .

我经常在我的一个测试设备上遇到这个问题(HTC One X) . 它非常饱满,非常适合测试 .

我注意到有一个替代插件:https://code.google.com/p/foreground-camera-plugin/这个问题 . 但我尽可能地避免使用插件......(可以轻松地移植到其他平台) . 并且's available up to Phonegap 2.4.0 and I' m使用Phonegap 2.9.0

我已经使用了文件URI而不是数据(以避免内存问题) .

我的问题是:有没有人知道Android何时决定杀死其他活动(比如Cordova,这是Phonegap非常需要的) . 在什么级别的免费记忆? (百分比,MB) . 所以我可以提前检查并警告用户 .

当然,我希望这个问题得到解决......但似乎不会很快得到解决......

Edit after the first remark

我无意解决真正的问题,我发现这不是真的可能 . 这是Android和Phonegap之间的事情 . 我只需要知道是否有可能警告用户这种情况会发生 . 因此,用户可以在继续之前杀死其他一些应用程序...那么这是什么时候发生的?什么时候android认为没有足够的内存来让这件事情继续下去?那是我的问题 .

Edit 2013 Nov. 29th

由于AustinAllover提供的链接,我现在知道这不仅仅是一个Phonegap问题......如果内存太少,Android相机似乎会杀死所有Java应用程序...所以这个问题比Phonegap / Cordova更通用...

2 回答

  • 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版

    希望它有所帮助,担心它没有 .

  • 1

    尝试找到一个不启动系统相机应用程序的插件 . 而是使用仅具有有限功能的自定义相机活动来减少内存使用量 .

相关问题