我正在为sqlite android做一些基准测试。如果我在执行前预加载总共120k,那么大多数设备是否有足够的内存?在查询正在执行时,还有其他线程正在进行,因此内存可能是问题所在。如何使用onLowMemory()方法?似乎没有太多关于使用该方法的例子。谢谢你的任何建议。
答案 0 :(得分:2)
使用该方法就像在Activity中覆盖它一样简单。
但是,请仔细阅读documentation:
当整个系统内存不足时调用此方法,并且 我想积极运行过程,试图收紧腰带。 虽然的确切位置是未定义 , 通常情况下,所有后台进程都会发生 我们想要的进程托管服务和前台UI 避免杀人。
想要变得更好的应用程序可以实现此方法 释放他们可能持有的任何缓存或其他不必要的资源 on to。系统将在返回后为您执行gc 这种方法。
我不确定(并且文档没有定义)“后台进程”是否包含AsyncTask
个实例和服务,或者只是后台应用程序,但我猜是这样的。
因此,当调用此方法时(如果它被调用),系统已经杀死了所有内容(优先级低于您的Activity),现在要求您在内存中释放任何不必要的资源。
所以,如果你想对低内存做出反应,这可能已经太晚了。
至于一般问题,如果大多数 Android设备的内存不足,我不知道。问题是,设备变化很大。
我也很难想象任何真实的情况,你需要在执行前预先加载(或堆叠)120k查询。您可以轻松地堆叠200并提交它们,而不是堆叠另外200个,依此类推。
我不确定为什么需要对此进行基准测试,但请不要对应用程序数据库中的默认条目执行120k查询。
您可以使用已填充的数据库传送应用程序,并将其从assets/
- 文件夹中复制出来。见android-sqlite-asset-helper