AsyncTask的使用限制

本文總結(jié)自Android實(shí)戰(zhàn)技巧:深入解析AsyncTask

AsyncTask的兩種執(zhí)行方式

  • execute(Params... params)
    Android2.3以前的版本
    核心線程數(shù) = 5,同時(shí)并發(fā)執(zhí)行5個(gè)任務(wù),超過5個(gè)則放入緩存隊(duì)列
    Android2.3以前的版本

    Android 3.0以后的版本
    核心線程數(shù) = 1,只能一個(gè)一個(gè)任務(wù)進(jìn)行,超過一個(gè)則放入緩存隊(duì)列
    Android 3.0以后的版本
  • executeOnExecutor(Executor exec, Params... params)
    Android 3.0以后新增的可自定義線程池的執(zhí)行方式

executeOnExecutor中Executor 的四種常用參數(shù)

  • Executors.newCachedThreadPool()
    未設(shè)置限制,可并發(fā)多個(gè)任務(wù)的線程池(據(jù)說線程上限為128個(gè),未驗(yàn)證)
  new AsyncTask<String, Integer, String>() {
            @Override
            protected String doInBackground(String... strings) {
                return null;
            }
        }.executeOnExecutor(Executors.newCachedThreadPool(),"");
9個(gè)線程并發(fā)
  • Executors.newFixedThreadPool(n)
    設(shè)置并發(fā)n個(gè)任務(wù)的線程池
        new AsyncTask<String, Integer, String>() {
            @Override
            protected String doInBackground(String... strings) {
                return null;
            }
        }.executeOnExecutor(Executors.newFixedThreadPool(7),"");
線程數(shù)量為7
  • AsyncTask.SERIAL_EXECUTOR
       new AsyncTask<String, Integer, String>() {
            @Override
            protected String doInBackground(String... strings) {
                return null;
            }
        }.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR,"");

效果和直接使用execute一致

       new AsyncTask<String, Integer, String>() {
            @Override
            protected String doInBackground(String... strings) {
                return null;
            }
        }.execute("");
  • AsyncTask.THREAD_POOL_EXECUTOR
    效果和Executors.newCachedThreadPool()一致
 new AsyncTask<String, Integer, String>() {
            @Override
            protected String doInBackground(String... strings) {
                return null;
            }
        }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,"");
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容