在我的应用程序中,我使用的是联系人同步适配器,但它具有与主应用程序共享的很多信息。适配器需要一些设置才能正常工作(例如登录信息以及用户是否更改了任何同步设置),因此我目前正在同一进程中运行它,并且它使用getApplicationContext()
与主ap通信,然后我有了一些同步适配器在同步过程中使用的Application
中的共享变量。
但是在training document和一些在线教程中,示例适配器被设置为在自己的进程中运行-它在 list 中使用android:process=":sync"
。那有必要吗?如果它确实在单独的进程中运行,我该如何与主应用通信?
最佳答案
在我们的上下文中,由于需要快速搜索,因此我们正在使用远程服务在内存中保存一个巨大的数据库。
我们使用远程服务而不是本地服务的原因是,我们认为在单独的进程中运行该服务将使我们更加难以达到每个进程的最大内存限制(该限制因设备和操作系统版本而异)。
在我们的初始设计中,我们使用AIDL
。稍后,我们切换到Messenger
。我不记得背后的原因。我将检查我们的源代码历史记录日志以找出原因。但是,我认为在大多数情况下,Messenger
并不比AIDL
复杂,并且我们不需要AIDL
提供的多线程功能。
关于android - 在Android中,联系人同步适配器是否应在单独的进程中运行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20664180/