Android 我应该使用哪个处理程序、异步任务还是线程?

Android 我应该使用哪个处理程序、异步任务还是线程?,android,Android,这可能是一个常见的问题,但我找不到确切的情况。我知道这在很多方面取决于开发者的选择,但我不知道如何选择最好的 我有我的初始应用程序启动屏幕,在检查用户是否登录时只显示一个徽标。如果他们的登录详细信息已经存储在SharedReference中,那么我想根据我的在线详细信息数据库检查这些详细信息以进行验证。一旦全部检查完毕,我会将用户转到主应用程序屏幕或注册屏幕 因此,在检查用户详细信息并进行验证时。我应该在一个单独的系统中执行此操作,还是使用处理程序?我认为不需要AsyncTask,因为我不想将任

这可能是一个常见的问题,但我找不到确切的情况。我知道这在很多方面取决于开发者的选择,但我不知道如何选择最好的

我有我的初始应用程序启动屏幕,在检查用户是否登录时只显示一个徽标。如果他们的登录详细信息已经存储在SharedReference中,那么我想根据我的在线详细信息数据库检查这些详细信息以进行验证。一旦全部检查完毕,我会将用户转到主应用程序屏幕或注册屏幕

因此,在检查用户详细信息并进行验证时。我应该在一个单独的系统中执行此操作,还是使用处理程序?我认为不需要AsyncTask,因为我不想将任何进度细节传回UI


TIA

您可能应该在单独的线程中执行此操作,因为这是网络活动。IntentService是一个不错的选择。我认为您主要关心的是,您选择的任何方法都需要工作,即使用户旋转屏幕,并且活动被破坏和重新创建


可能会在启动屏幕上使用一个片段和setRetainInstancetrue,以便在配置更改后将其重新连接到活动。然后,您可以将处理程序或信使传递给服务,以便更准确,或者让服务在完成工作后发送广播意图。

您可能应该在单独的线程中执行此操作,因为这是网络活动。IntentService是一个不错的选择。我认为您主要关心的是,您选择的任何方法都需要工作,即使用户旋转屏幕,并且活动被破坏和重新创建


可能会在启动屏幕上使用一个片段和setRetainInstancetrue,以便在配置更改后将其重新连接到活动。然后,您可以将处理程序或信使传递给服务,使其更准确,或者让服务在完成工作后发送广播意图。

我建议使用AsyncTask

首先,因为AsyncTask是一个完整的线程框架,它在后台使用线程和处理程序,可以更好地控制单线程操作。包括取消,例如,如果用户决定在启动屏幕完成之前离开应用程序

我认为不需要AsyncTask,因为我不想通过任何考试 将进度详细信息返回到UI


实际上,是的,即使要启动新活动登录或AlreadyLoggeIn,也必须从UI线程调用startActivity,我建议使用AsyncTask

首先,因为AsyncTask是一个完整的线程框架,它在后台使用线程和处理程序,可以更好地控制单线程操作。包括取消,例如,如果用户决定在启动屏幕完成之前离开应用程序

我认为不需要AsyncTask,因为我不想通过任何考试 将进度详细信息返回到UI

实际上,是的,即使要启动新的活动登录或AlreadyLogedin,您也必须从UI线程调用startActivity,何时使用异步任务? AsyncTask有助于减轻对后台线程的内存密集型/阻塞调用,而您的UI操作仍然可以在UI线程中进行。 如果任何操作阻塞UI线程的时间超过4-5秒,则可能还会出现ANRAndroid无响应对话框。AsyncTask在您希望在PostExecute上完成流程之后以及在PreExecute上启动流程之前更新UI时非常方便

用线 无论您在doInBackground中使用AsyncTask做什么,都可以使用线程来实现。但是,如果您需要执行任何UI操作,则需要使用处理程序或runOnUiThread来完成任务。如果要使用线程,请参阅

布迪乌斯说的也是真的

在您的情况下,您可以使用AsyncTask检查sharedPref中的用户凭据,然后使用中间件进行适当的身份验证,最后在onPostExecute中导航到新活动

同时,您可以向用户显示一个进度条,表示正在进行的身份验证过程

何时使用异步任务? AsyncTask有助于减轻对后台线程的内存密集型/阻塞调用,而您的UI操作仍然可以在UI线程中进行。 如果任何操作阻塞UI线程的时间超过4-5秒,则可能还会出现ANRAndroid无响应对话框。AsyncTask在您希望在PostExecute上完成流程之后以及在PreExecute上启动流程之前更新UI时非常方便

用线 无论您在doInBackground中使用AsyncTask做什么,都可以使用线程来实现。但是,如果您需要执行任何UI操作,则需要使用处理程序或runOnUiThread来完成任务。如果要使用线程,请参阅

布迪乌斯说的也是真的

在您的情况下,您可以使用AsyncTask检查u 在sharedPref中创建ser凭据,然后使用中间件进行适当的身份验证,最后在onPostExecute中导航到新活动


同时,您可以向用户显示一个进度条,表示正在进行的身份验证过程

再加上这个。我有一个非常类似的情况,我必须验证一个用户登录,它存储在手机的后台,从主屏幕。我使用了IntentService ResultReceiver模式。起初,我花了一点时间来熟悉它,但一旦它实现了,管理起来就非常简单


基本上,您启动作为您的意图服务的活动,向其传递用户名、密码等所需的任何参数。。。。在我的例子中,它是一个单独的类,使用REST来验证用户。REST类完成工作后,ResultReceiveResult上的ResultReceiver方法将数据从REST活动返回到UI活动

再加上这个。我有一个非常类似的情况,我必须验证一个用户登录,它存储在手机的后台,从主屏幕。我使用了IntentService ResultReceiver模式。起初,我花了一点时间来熟悉它,但一旦它实现了,管理起来就非常简单

基本上,您启动作为您的意图服务的活动,向其传递用户名、密码等所需的任何参数。。。。在我的例子中,它是一个单独的类,使用REST来验证用户。REST类完成工作后,ResultReceiveResult上的ResultReceiver方法将数据从REST活动返回到UI活动