我正在为 Android 开发地图渲染应用程序。地图数据相当大,大约 1.1 Gb。由于 .apk 大小在市场和手机中都有限制,因此建议在应用程序启动时下载它。
这是我现在使用的模式:
1. 主要活动(用于渲染地图)检查数据是否可用,如果没有,我启动下载活动
2. 下载活动启动本地服务
3. 服务下载 zip 文件并解压地图数据
4. 服务向下载活动和通知发送事件
我生成了一项服务,因为整个过程可能需要 30 分钟到几个小时,具体取决于电话和网络。
但是我无法确保只有一个程序实例正在运行,我尝试了所有的 launchmode 属性组合都没有帮助。
正如您可能理解的那样,运行的两个实例会使下载/解压缩崩溃。
这真是令人沮丧!现在我正在对 sdcard 文件锁进行一些丑陋的读/写操作,并且它大部分时间都在工作以确保只有一个实例正在运行。
我的目标是 Android 1.6 及更高版本。