大家好我有一个关于在Android工作室中使用的Asyntask的问题:
据我所知,AynTask通过一个线程用于用户界面,即所谓的UI线程。如果直接在UI线程上执行长时间运行操作,例如从Internet下载文件,应用程序的用户界面将“冻结”,直到相应的任务完成。
但是,我想说我想注册一个帐户以便我可以登录,这根本不需要时间,所以我为什么要使用Asyntask?
假设我想向数据库发送100个字符串,我认为这可以用milisecs完成,所以再次,为什么要使用以及如何决定何时使用Asyntask?
我希望你们能帮助我,我一直在寻找很长时间!
答案 0 :(得分:0)
如果您不知道操作需要多长时间,则应在单独的线程中执行它,然后将结果传递给UI线程。我认为应该在单独的线程和HTTP请求中访问数据库。在耗时的查询的情况下,它可能是长操作。 AsyncTask是一种方法。您也可以使用其他技术。目前使用的流行技术是应用RxJava库,它为您提供了高级功能反应接口,用于编写具有一些附加功能的多线程应用程序。您可以在例如执行操作Sechdulers.io()
(I / O)线程然后将结果传递给AndroidSchedulers.mainThread()
,这是UI线程。
还有其他一些技巧,例如使用Looper&来自Android SDK的Handler或来自Java的Thread类,但这些技术需要更多的知识,更多的工作,编写更多的样板代码和你有更多的问题要处理。