gpt4 book ai didi

java - 线程中的服务与服务中的线程

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

我正在尝试构建一个应用程序,该应用程序从传感器(加速度计和陀螺仪)获取值并将它们存储在文件中,我认为这是 CPU 密集型的。所以我的问题是我是否应该在MainActivity中创建一个线程并启动我的服务,或者我应该在我的MyService中创建一个线程并执行所有操作必需品?我正在读this它说:

If your service is going to perform any CPU-intensive work or blocking operations, such as MP3 playback or networking, you should create a new thread within the service to complete that work. By using a separate thread, you can reduce the risk of Application Not Responding (ANR) errors.

那么哪一个对我来说是更好的选择?

最佳答案

据我了解您的问题,您需要管理服务中的线程。正如 android 所说的 Thread

- if it is destroyed by android in middle due to low memory, then android will not guarantee to restart it again. That means user lost his half work.

所以

1> 因为如果出现意外错误,您的工作需要重新启动。所以你应该把你的线程放在服务中。如果停止则再次启动线程。

2> 如果您将线程放入 Activity 中,它将随着 Activity 结束而丢失。但服务上却相反。服务是 Android 的高优先级任务。如果它在执行工作时被 Android 由于内存不足而损坏。然后,如果您从 onStartCommand() 返回了 START_STICKYSTART_REDELIVER_INTENT,Android 将确保重新启动您的服务。

3> Thread - 不是android的组件,因此android在由于内存不足而杀死应用程序时不会考虑线程优先级。

4>Service - 是android的一个组件,因此在由于内存不足而销毁应用程序时需要考虑优先级。

关于java - 线程中的服务与服务中的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47252175/

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