码迷,mamicode.com
首页 > 其他好文 > 详细

70.自定义异步任务

时间:2015-12-26 11:38:59      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:

1.抽象异步任务类:

  1. public abstract class YTAsyncTask<T> {
  2. private static final HandlerThread handlerThread = new HandlerThread(YTAsyncTask.class.getName(), 10);
  3. public YTAsyncTask() {
  4. }
  5. protected abstract void onPreExecute();
  6. protected abstract T doInBackground();
  7. protected abstract void onPostExecute(T param);
  8. public final YTAsyncTask<T> execute() {
  9. final Handler mainHandler = new Handler(Looper.getMainLooper());
  10. Handler bgHandler = new Handler(handlerThread.getLooper());
  11. this.onPreExecute();
  12. bgHandler.post(new Runnable() {
  13. public void run() {
  14. final T param= YTAsyncTask.this.doInBackground();
  15. mainHandler.post(new Runnable() {
  16. public void run() {
  17. YTAsyncTask.this.onPostExecute(param);
  18. }
  19. });
  20. }
  21. });
  22. return this;
  23. }
  24. static {
  25. handlerThread.start();
  26. }
  27. }

2.使用用例:

  1. public class MainActivity extends AppCompatActivity {
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.activity_main);
  6. testAsyncTask();
  7. }
  8. private void testAsyncTask() {
  9. new YTAsyncTask<String>() {
  10. @Override
  11. protected void onPreExecute() {
  12. Log.e("ytr", "onPreExecute,currentThread=" + Thread.currentThread().getName());
  13. }
  14. @Override
  15. protected String doInBackground() {
  16. Log.e("ytr", "doInBackground,currentThread=" + Thread.currentThread().getName());
  17. return "Hello World";
  18. }
  19. @Override
  20. protected void onPostExecute(String param) {
  21. Log.e("ytr", "onPostExecute,currentThread=" + Thread.currentThread().getName()+"\tparam="+param);
  22. }
  23. }.execute();
  24. }
  25. }

打印结果:
技术分享




70.自定义异步任务

标签:

原文地址:http://www.cnblogs.com/yutianran/p/5077709.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!