android-如何有效使用Asynctask

android-如何有效使用Asynctask,第1张

概述我是Android新手.我想问你们关于Asynctask的问题.我有一个活动显示项目的(应用程序,歌曲,故事..)详细信息.它需要许多相关数据,例如屏幕截图,相关应用程序(歌曲,故事),…那么Asynctask的最佳实现是什么?我是否为每个任务创建一个asynctask(例如:2asynctask:1用于获取屏幕截图,1用于获

我是Android新手.我想问你们关于Asynctask的问题.我有一个活动显示项目的(应用程序,歌曲,故事..)详细信息.它需要许多相关数据,例如屏幕截图,相关应用程序(歌曲,故事),…那么Asynctask的最佳实现是什么?我是否为每个任务创建一个asynctask(例如:2 asynctask:1用于获取屏幕截图,1用于获取相关项目…)或全部放入doInBackGround并发布进度?

提前致谢.

解决方法:

从面向对象的角度来看,应该始终将业务逻辑内容与UI内容隔离.我会将所有业务调用(如getSong(),getStore()等)隔离并集中到POJO中,并使我的活动类仅专注于UI *** 作/渲染,这是我的方法:

>定义接口IBusinessDAO
>定义RealBusinessDAO实施IBusinessDAO
>定义MockBusinessDAO实施IBusinessDAO
>呼叫IBusinessDAO.getSong();在AsyncTask.doInBackground()内部

public class MyActivity extends Activity {  IBusinessDAO businessDAO;  ... ...  private class MyAsyncTask extends AsyncTask<VoID, VoID, VoID> {    ... ...            protected voID doInBackground(VoID... params) {      businessDAO.getSong();    }  }  ... ...  public voID onCreate(Bundle savedInstanceState) {    if (runInTest)      businessDAO = new MockBusinessDAO();    else      businessDAO = new RealBusinessDAO();    new myAsyncTask().execute();  }}

因此,在不同活动之间的每个AsyncTask实现中,您的AsyncTask.doInBackgroud()都将变得简洁明了,从而使您的代码更加高效和可维护.

它也有助于提高代码的可测试性,因为它是POJO,所以可以对业务逻辑进行单元测试,因此您可以使用纯JUnit编写测试用例.有时我们想测试UI组件,而我们并不真正在乎底层业务逻辑是如何实现的,例如,我的业务逻辑连接到远程http服务器下载一些Json数据,我不想每次都这样做要测试UI布局,对于这种情况,我可以轻松地使用MockBusinessDAO(某种形式的Spring DI概念)来更改我的所有Activity,以测试UI组件,而无需考虑实际业务逻辑的实现方式.

最后,它还提高了代码的可重用性,因为businesDAO除了与经典的POJO无关之外,与Andriod无关,此外,您无需担心BusinessDAO实现中的任何并发性,因为它的所有方法都将在AsyncTask.doInBackground( ) 方法.

希望对您有所帮助.

总结

以上是内存溢出为你收集整理的android-如何有效使用Asynctask全部内容,希望文章能够帮你解决android-如何有效使用Asynctask所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1071980.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存