gpt4 book ai didi

android - IntentService 中的数据库操作导致应用程序停止、变得无响应并给出 ANR

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:47:19 26 4
gpt4 key购买 nike

我在警报管理器中使用 IntentService 每 15 秒触发一次。我必须不断向服务器发送大量数据并在后台接收大量数据作为响应。我必须遵循以下过程:

  1. 我正在通过查询从数据库中读取数据。

  2. 然后通过POJO架构转成Json。

  3. 使用 Retrofit 库将此 JSON 请求发送到服务器。

  4. 接收响应数据。

  5. 如果数据库中有任何更新,则通过某些查询将此数据插入我的数据库。

有没有替代方法?因为我正面临 ANR。如果数据较少,则可以正常工作。但随着数据量变大,UI 停止并且应用程序变得无响应。

最佳答案

经过一番努力终于找到了解决方案:

我只是使用单独的进程来处理 Intent 服务。

在“ list ”文件中使用它

 <service android:name=".BackgroundSyncDataService"
android:process=":my_process">
</service>

描述:

名称前面的冒号前缀告诉 Android 该服务对其声明的应用程序是私有(private)的。如果不使用冒号,该服务将是一个全局进程,可以被其他 Android 应用程序使用。

在自己的进程中运行一个服务,会赋予它自己的内存地址空间,并且这个进程中虚拟机的垃圾收集器不会影响应用进程。

如果服务在其主线程中执行长时间运行的操作,则在其自己的进程中运行服务不会阻塞应用程序。

关于android - IntentService 中的数据库操作导致应用程序停止、变得无响应并给出 ANR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37941284/

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