gpt4 book ai didi

java - android跨进程同步方法

转载 作者:行者123 更新时间:2023-12-01 10:01:59 25 4
gpt4 key购买 nike

我在一个名为 Remote 的类中同步了静态方法,这些方法从服务中调用以从网络获取数据。该服务是一个 IntentService,每次用户在 UI 中向下滚动列表并且需要获取更多项目时都会启动该服务。这些方法是同步的,因为它们也是从另一个源(同步适配器)调用的。对 Remote 中同一方法的两次调用不能交错。但由于我的同步适配器在单独的进程上运行,因此同步方法不会强制执行线程安全,并且我会得到不一致的状态。

我通过将同步适配器切换回在主进程中运行来解决了这个问题。更具体地说,从同步服务中删除 android:process 值。但我想知道是否有一种更强大的方法,无论同步适配器的位置如何,它都可以工作。

最佳答案

几点:

  • 您可以将所有网络相关代码放在一个 IntentService 中,并从不同位置向其发送 Intent ,并传递任务详细信息作为附加内容。 IntentService将依次处理这些 Intent ;

  • 在进程中,您可以使用 FutureTask[1] 或 Volley 的 RequestFuture<>[2] 类来同步您的网络请求。

[1] 查看如何使用 FutureTask 来防止重新启动相同操作的示例:http://jcip.net/listings/Memoizer3.java

[2] 请参阅此处的示例:Can I do a synchronous request with volley?

关于java - android跨进程同步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36735682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com