zoukankan      html  css  js  c++  java
  • 70.自定义异步任务

    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()+" param="+param);
    22. }
    23. }.execute();
    24. }
    25. }

    打印结果:





  • 相关阅读:
    将HTTP请求对象转成curl命令行
    图片爬虫实践
    [CF1499E] Chaotic Merge
    [ICPC2020南京I] Interested in Skiing
    [ICPC2018西安J] Philosophical … Balance
    [ICPC2018西安L] Eventual … Journey
    [ICPC2018西安I] Misunderstood … Missing
    [ICPC2018西安D] Deja vu of … Go Players
    [ICPC2018西安F] Interstellar … Fantasy
    [ICPC2020南京L] Let's Play Curling
  • 原文地址:https://www.cnblogs.com/yutianran/p/5077709.html
Copyright © 2011-2022 走看看