我正在尝试构建一个应用程序,它从传感器(加速度计和陀螺仪)获取值并将它们存储在文件中,我认为这些文件是CPU密集型的。
所以我的问题是我是否应该在dict1 = {'UN':'Unknown','VP':'Very Poor','PO':'Poor','MO':'Moderate',
'GO':'Good','VG':'Very Good','EX':'Excellent'}
block1_v = json_data["SiteRep"]["DV"]["Location"]["Period"][1]["Rep"][0]["V"]
visib.append(dict1[block1_v])
中创建一个帖子并启动我的服务,还是应该在我的MainActivity
中创建一个帖子并完成所有必需品?
我正在阅读this并说:
如果您的服务要执行任何CPU密集型工作或阻止操作(如MP3播放或网络),则应在服务中创建新线程以完成该工作。通过使用单独的线程,可以降低应用程序无响应(ANR)错误的风险。
那么对我来说哪一个更好?
答案 0 :(得分:1)
尽管我理解您的问题,但您需要管理服务中的线程。 正如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 - ;如果您将线程放入活动中,它将在活动结束时丢失。但服务相反。服务是android的高优先级任务。如果它在执行其工作时被销毁,则由于内存不足而在Android中间。然后,如果您从START_STICKY
返回START_REDELIVER_INTENT
或onStartCommand()
,则Android会确保它会重新启动您的服务。
3> Thread
- 不是android的一个组件,因此在内存不足的情况下杀死应用程序时,android不会考虑线程优先级。
4> Service
- 是android的一个组件,因此在内存不足的情况下销毁应用程序时需要考虑优先级。