android學習 - Activity and Intent

     Activity是android重要組件,是一個視圖組件,我們所熟知的android應用,一個應用屏幕顯示就是一個Activity,Activity就像是人的一張臉,臉上的五官就相當於我們添加在Activity的組件如Button。Activity也如人一般,有生老病死,一個循環週期,Activity生命週期有七種狀態,onCreate(),onStart(),onResume(),onPuause(),onStop(),onDestroy()。
    Activity生命週期如圖:
        


    那麼Activity與Intent是什麼關係呢?Intent好比一個信使,兩個Activity就像是現實中的情侶,他們遠隔一方,難捱相思之苦,所以需要一個信使,來給他們送送信,送送東西什麼的,這樣就方便多了,不用自己來回跑,那麼Activity怎樣指使Intent送信呢?如果我們送信的話,需要在信封上面寫地址吧,OK,Intent提供了這樣一個方法,setClass(本地址,對方地址);,光有地址沒內容,是不是很不爽?對了,如果你寄個空的信封,估計你女朋友要罵你了,OK,這個小意思,Intent會幫你搞定,Intent提供了這樣的功能,putExtra(key,vaue);就會幫你傳遞你需要傳遞的信息,key可以說是你寫信的標題,作爲一個標識,value就是你信上的內容了,OK,這樣算是把信寫好了,但是還沒完,如果你沒有要求Intent送信,他也是不會送的,所以Activity有一個方法,startActivity(Intent),這樣我們情書就發送到了下一個Activity,兩個Activity從此解得相思苦。
    主要代碼:

  1. //綁定時間監聽 
  2. btn1.setOnClickListener(new OnClickListener() { 
  3. @Override 
  4. public void onClick(View v) { 
  5. // TODO Auto-generated method stub 
  6. Intent _inIntent = new Intent();    //創建一個Intent對象 
  7. _inIntent.putExtra("xiaozhu""你好啊,我的朋友!");   //像Intent加入信息-鍵值對 
  8. _inIntent.setClass(FirstActivity.this, SecondActivity.class);  //設置目標Activity 
  9. FirstActivity.this.startActivity(_intent);  //啓動跳轉到下一個Activity 
  10. });  


我們的Intent還是很強大的,下面我們用Intent實現撥號功能,請看代碼:
 
  1. btn3.setOnClickListener(new OnClickListener() { 
  2. @Override 
  3. public void onClick(View v) { 
  4. // TODO Auto-generated method stub 
  5. Intent _intent = new Intent();   //創建一個Intent對象 
  6. _intent.setAction(Intent.ACTION_DIAL);   //設置Intent動作,就是需要Instent做出什麼樣的反應 
  7. _intent.setData(Uri.parse("tel:13787669477"));  //設置電話號碼,參數 
  8. FirstActivity.this.startActivity(_intent);   //啓動跳轉,跳轉到打電話界面 
  9. }); 
當我們實現應用的時候,會出現各種情況,比如我們在寫微博的時候,突然來電話了,我們手機就會跳轉到接電話的Actvity,這樣我們的微博應用就被覆蓋了,當我們打電話結束後,我們還想寫的時候,如果我們以前寫的全沒了,這就會讓我們有種發狂的感覺,所以我們強大的Activity就出了奇招,onSaveInstanceState(Bundle outState),就是保存我們Activity狀態的方法,很好的強大,當然既然有存的方法,那麼肯定有取的方法了,onRestoreInstanceState(Bundle savedInstanceState),就是我們Activity取得狀態數據的方法,這樣我們就不必擔心我們輸入的數據丟失了。
     主要代碼:
 
  1. protected void onSaveInstanceState(Bundle outState) { 
  2. // TODO Auto-generated method stub 
  3. //super.onSaveInstanceState(outState); 
  4.    String etString = et1.getText().toString();   //取得輸入框中數據,et1爲EditText 
  5.    outState.putString("byxiaozhu", etString);  //將當前Activity的狀態保存在outStat,參數是鍵值對 
  6.  
  7.      
  8.  
  9. @Override 
  10. protected void onRestoreInstanceState(Bundle savedInstanceState) { 
  11. // TODO Auto-generated method stub 
  12. //super.onRestoreInstanceState(savedInstanceState); 
  13. String state = savedInstanceState.getString("byxiaozhu");   //取出Activity數據 
  14. et1.setText(state);  //將取出數據顯示在輸入框中 



今天學習到此,下次繼續,把每天學到的東西,記錄下來,靜下心往前走。。。。。




 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章