android AsyncTask相關的一些面試題目

來源:互聯網
上載者:User

android AsyncTask相關的一些面試題目

AsyncTask在android4.0之後android採用線程池來實現,最多開5個線程,所以幾個AsyncTask執行的時候順序是隨機的,

如果5個AsyncTask順序執行之後,又有一個AsyncTask,那最後一個會被掛起,當5個AsyncTask有一個被執行完以後最後一個會被插入執行

public class TestActivity extends Activity { @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.test);new fetchServerVersionAndSupportOsHttpTasker().execute();new fetchServerVersionAndSupportOsHttpTasker1().execute();new fetchServerVersionAndSupportOsHttpTaske2().execute();}public class fetchServerVersionAndSupportOsHttpTasker extends AsyncTask {        @Override        protected String doInBackground(Object... params) {        System.out.println("=============first doInBackground");        CommonHttpRequest.getForceUpgradeRelatedInfo();        return "aaaa";        }        @Override        protected void onPostExecute(String result) {            if(!TextUtils.isEmpty(result)) {              System.out.println("===============first postexecute");            }        }    }   public class fetchServerVersionAndSupportOsHttpTasker1 extends AsyncTask {        @Override        protected String doInBackground(Object... params) {        System.out.println("=============second doInBackground");        CommonHttpRequest.getForceUpgradeRelatedInfo();        return "bbb";        }        @Override        protected void onPostExecute(String result) {            if(!TextUtils.isEmpty(result)) {              System.out.println("===============second postexecute");            }        }    }   public class fetchServerVersionAndSupportOsHttpTaske2 extends AsyncTask {        @Override        protected String doInBackground(Object... params) {        System.out.println("=============third doInBackground");        //CommonHttpRequest.getForceUpgradeRelatedInfo();        return "ccc";        }        @Override        protected void onPostExecute(String result) {            if(!TextUtils.isEmpty(result)) {              System.out.println("===============third postexecute");            }        }    }}
執行結果:
10-16 14:03:38.872: I/System.out(23132): =============third doInBackground10-16 14:03:38.872: I/System.out(23132): =============second doInBackground10-16 14:03:38.872: I/System.out(23132): =============first doInBackground10-16 14:03:38.892: I/System.out(23132): ===============third postexecute10-16 14:03:38.922: I/System.out(23132): ===============second postexecute10-16 14:03:38.922: I/System.out(23132): ===============first postexecute


堆棧的介紹:

 堆棧就是這樣一種資料結構。它是在記憶體中開闢一個儲存地區,資料一個一個順序地存入(也就是“壓入——push”)這個地區之中。有一個地址指標總指向最後一個壓入堆棧的資料所在的資料單元,存放這個地址指標的寄存器就叫做堆棧指標。開始放入資料的單元叫做“棧底”。資料一個一個地存入,這個過程叫做“壓棧”。在壓棧的過程中,每有一個資料壓入堆棧,就放在和前一個單元相連的後面一個單元中,堆棧指標中的地址自動加1。讀取這些資料時,按照堆棧指標中的地址讀取資料,堆棧指標中的地址數自動減 1。這個過程叫做“彈出pop”。如此就實現了後進先出的原則。 


TASK1包含三個activity分別是:p,q,r;啟動順序為p-->q-->rTASK2包含兩個activity分別是:a,b;啟動順序為a-->b;TASK1首先啟動p,那麼這個p就是執行這個任務的根activity,任務也是定義在這個activity下的。通過屬性Manifest檔案中的activity屬性中的taskAffinity來定義。        (1)此時p啟動後就被壓入堆棧,因為此時堆棧中只有這一個activity,所以p處於棧底,也處於棧頂。此時使用者能夠看到的就是p介面。        (2)p啟動q後,q入棧。此時棧頂為q。q呈現的介面將p覆蓋,p進入後台運行(此時是activity生命週期的pause狀態)或者進入後台但不運行(此時是activity生命週期的stop狀態)。        (3)q啟動r後,r入棧。此時棧頂為r。r呈現的介面將q覆蓋,q進入後台運行。        (4)按back鍵後就是調用finish函數結束r (activity)的生命。此時r出棧,r的生命週期結束。        (5)繼續back鍵,結束q的生命,此時q出棧。        (6)繼續back鍵,結束p的生命,此時p出棧。        (7)此時棧內所有activity都已出棧,所以就會顯示HOME螢幕介面.

如果A->B->C->C如果C是singleTop或是singletask那麼最後一次C不會執行oncreate
A如果是singletop A->B->C->A那麼A會被重新執行oncreate,回退到CA如果是singleTask,則A不會執行oncreate,回退會回到home


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.