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

Hee*_*ora 11 android retrofit android-intentservice jsonschema2pojo

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

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

  2. 然后通过POJO架构在Json中转换它.

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

  4. 接收数据作为回应.

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

还有其他方法吗?因为我正面临着ANR.如果数据较少,则其工作正常.但随着数据量变大,UI停止运行,应用程序变得无法响应.

Hee*_*ora 4

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

我只是使用单独的进程来为意图服务工作。

在“ Manifest ”文件中使用它

 <service android:name=".BackgroundSyncDataService"
        android:process=":my_process">
  </service>
Run Code Online (Sandbox Code Playgroud)

描述 :

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

在自己的进程中运行服务会为其提供自己的内存地址空间,并且该进程中虚拟机的垃圾收集器不会影响应用程序进程。

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