Java 服务、线程或异步任务
请原谅我的问题,因为我还是编程新手,所以我不完全理解主线程、异步任务、服务和线程的概念。我正在阅读有关Android服务的文档,因为我想在主线程之外执行一些任务。它说: 如果您需要在主线程之外执行工作,但只能在 用户正在与您的应用程序交互,那么您应该 可能会创建一个新线程而不是服务 1.他们是否说,在您离开应用程序后,“线程”立即停止(即:主页按钮) 例如,如果您想播放一些音乐,但只能在 活动正在运行,您可以在onCreate()中创建一个线程,开始 在onStart()中运行它,然后在onStop()中停止它。也考虑使用 AsyncTask或HandlerThread,而不是传统的Thread类。 有关详细信息,请参阅进程和线程文档 线程 2.如果线程被烘焙到Java中,为什么android会有异步任务 请记住,如果您确实使用了服务,它仍然会在您的应用程序中运行 默认情况下,应用程序的主线程,所以您仍然应该创建一个新的 服务中的线程(如果它执行密集或阻塞) 行动 3.这基本上是不是意味着,几乎每个服务基本上都会在其中创建一个线程 4.在服务内部启动异步任务是否不好Java 服务、线程或异步任务,java,android,android-asynctask,android-service,Java,Android,Android Asynctask,Android Service,请原谅我的问题,因为我还是编程新手,所以我不完全理解主线程、异步任务、服务和线程的概念。我正在阅读有关Android服务的文档,因为我想在主线程之外执行一些任务。它说: 如果您需要在主线程之外执行工作,但只能在 用户正在与您的应用程序交互,那么您应该 可能会创建一个新线程而不是服务 1.他们是否说,在您离开应用程序后,“线程”立即停止(即:主页按钮) 例如,如果您想播放一些音乐,但只能在 活动正在运行,您可以在onCreate()中创建一个线程,开始 在onStart()中运行它,然后在onSt
AsyncTask
只是一种快速、简单但高效的方法,可以在不阻塞应用程序GUI的情况下执行它们AsyncTask
幕后只是将任务提交到线程池执行。如果您有许多短期任务,比如解析网络流量,AsyncTask
非常好
但是,如果要处理大量请求,可能需要对执行任务的线程池进行更多控制
线程
被销毁时,应该销毁线程
。因此,如果在活动
中启动线程
,则当该活动
被销毁或传输到服务时,该线程应被销毁。例如,您可以在线程中启动音乐
并在那里更新歌曲,但如果您希望在活动
被销毁时继续播放,则应将其移动到服务
2.如果线程被烘焙到Java中,为什么android会有异步任务
AsyncTask
允许您在后台工作完成之前、期间和之后,通过使用其任何内置方法(除了doInBackground()
),执行后台工作并轻松更新UI
,因为它是唯一不在UI线程上运行的方法
3.这基本上是不是意味着,几乎每个服务基本上都会在其中创建一个线程
不一定,但您可以在其内部创建线程
4.在服务内部启动异步任务是否不好
不,你可以这样做
这是做背景工作的好方法。它的方法使得更新UI
非常容易。但是您需要仔细阅读文档(甚至可能几次),以确保完全理解如何使用它们。此外,请记住,这些用于短期操作,因此它们可以很好地用于下载网络数据,但不应用于持续时间超过几秒钟的操作(根据文档)您可能会被线程、任务和进程弄糊涂。任务是一种小型进程。进程
是一个在你的系统中运行的程序,例如启动任务管理器时,它显示所有进程都像Internet explorer一样运行,但线程是一个小的轻量级进程,这意味着你可以说执行某些任务的子进程,但在安卓中是异步的,与线程类似,但可能很长安卓你正在安卓手机上玩temple run游戏,有人打电话给你,以便执行高优先级任务,当前线程暂停在那里,并且有很多方法
就像onCreate()、onPause()一样,您可以理解它。您应该指定asynctasks用于执行重载!这是asynctask的主要用途之一。不,您只需要在非gui线程上进行联网。由于异步任务在非gui线程上执行,因此可以使用它,但它不是唯一的解决方案@Dante不,AsyncTask
不一定是重任务