
我是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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)