请原谅我这些问题,因为我对编程还很陌生,所以我并不完全理解主线程、异步任务和服务线程的概念。我正在阅读有关安卓服务的文档,因为我想在主线程之外执行一些任务。文档中说:
如果你需要在主线程之外执行工作,但只在用户与你的应用程序交互时才这样做,那么你可能应该创建一个新的线程而不是一个服务。
1.他们是不是意味着“线程”会在你离开应用程序(例如:按Home键)后立即停止?
例如,如果你想播放一些音乐,但只在你的Activity运行时才这样做,你可以在onCreate()中创建一个线程,在onStart()中开始运行它,然后在onStop()中停止它。也可以考虑使用AsyncTask或HandlerThread,而不是传统的Thread类。有关线程的更多信息,请参阅进程和线程文档。
2.如果线程已经包含在Java中,为什么安卓有AsyncTasks?
请记住,如果您使用服务,默认情况下它仍在应用程序的主线程中运行,因此如果服务执行密集或阻塞操作,则仍应在服务中创建一个新线程。
3.这基本上意味着几乎每个服务都会在其内部创建一个线程,对吗?
4.在服务中启动AsyncTask是否不好?
AsyncTask
只是一种快速访问线程池的方式。如果你想编写一个处理大量流量的应用程序,我建议使用其他方法来控制性能调优,而不是使用AsyncTask
。 - William Morrison