Phonegap相机机器人杀死cordova

我正在做几个Phonegap项目。 在其中一些我使用的相机function。

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

Android的怪癖

Android使用意图在设备上启动相机活动来捕获图像,而在内存不足的手机上,Cordova活动可能会被终止。 在这种情况下,图像可能不会出现时,恢复Cordova活动。

我在我的一个testing设备上一直有这个问题(HTC One X)。 这是相当完整的,好testing这个。

我注意到有一个替代插件: 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应用程序,如果内存太less,所以这个问题是比Phonegap /cordova…

Solutions Collecting From Web of "Phonegap相机机器人杀死cordova"

不知道你的问题是否存在一个很好的答案,但我会尝试。

当应用程序被杀死以释放内存时,这取决于相当多的因素。 首先和主要因素是相机活动需要运行多less。 相机应用程序本身是在大多数设备(尽pipe它变化)大约10MB。 这是应用程序在内存中的大小,而不是运行该活动时所需的大小,这在逻辑上会更大一些。 这还取决于相机本身和存储实际照片所需的内存量,假设照片在存储时大约为4MB,并且大约20MB。 这给了我们一个近似的上限为30MB的应用程序运行,虽然是猜测,我会稍后检查一下,并编辑它。

有关Android的内存很好的参考你可以在这里findhttps://01.org/android-ia/user-guides/android-memory-tuning-android-5.0-and-5.1他们的build议总是有500MB或更多的内存可用于运行的应用程序,这当然是所有应用程序正在运行,而不是一个特定的应用程序。

与GC开始从内存中移除应用程序这一点相比,这种情况非常接近内存的实际界限,当less于5%仍然是空闲的时候,这个值通过我自己的实验是非常有效的。 首先它杀死仍在caching中但不再需要的应用程序,只是作为最后的手段杀死那些活动的应用程序。

我的假设是,你的应用程序将被杀死大约50MB以下的内存免费,但我必须强调,这里有很多假设,并没有通用的方式告诉你一个很好的答案每个设备与每种相机和每个版本Android的。

希望它有帮助,恐惧它没有。

尝试find一个不启动系统相机应用程序的插件。 相反,使用自定义摄像头活动只有有限的function来减less内存使用量。