Android基礎學習第二篇—Activity

來源:互聯網
上載者:User

標籤:

寫在前面的話:

1. 最近在自學Android,也是邊看書邊寫一些Demo,由於知識點越來越多,腦子越來越記不清楚,所以打算寫成讀書筆記,供以後查看,也算是把自己學到所理解的東西寫出來,獻醜,如有不對的地方,希望大家給與指正。

2. 由於類似於讀書筆記,可能格式神馬的會比較隨(hen)意(chou),大家看著受不了,可以使勁吐槽。

*************************************我只是分割線***************************************

上一篇已經講了一些關於Project目錄結構的東西,這次記錄一下關於Android四大組件之一的Activity的一些東西,它也是Android中最基本的模組之一。

<一>什麼是Activity?

它叫活動(聽著很彆扭,這麼長時間還是感覺不好接受~),幾乎所有的活動都是用來與使用者互動的,活動主要關注與視圖表單的建立,一個應用程式可以包含零個或者多個活動,但是包含零個活動的應用比較少。【PS:這話是參考別人的,我只是拿來裝X】

其實通俗來說,我們可以把手機當做一個瀏覽器,而Activity就是其中的一個個網頁,在Activity上面,我們可以添加不同的View(就是.NET裡面所說的控制項),並且可以執行一些操作邏輯。

<二>Activity的生命週期

【圖片是借用別人的】,

Activity的“整個生命週期”是發生在第一次調用onCreate(Bundle)和唯一最後調用onDestroy()方法之間。在onCreate(Bundle)方法中完成活動的初始化操作設定全域狀態,比如載入布局、綁定事件等,並在onDestroy()方法釋放資源。

Activity的“顯示生命週期”是發生在調用onStart()方法以及調用相對應的onStop()方法之間。在這之間,可以在手機螢幕上看到這個活動。隨著Activity對使用者的可見和不可見狀態的改變,這兩個方法能被多次調用。

Activity的“前台生命週期”是在onResume()和onPause()方法之間所經曆的,在這個周期內,活動處於運行狀態,此時的活動是可以和使用者進行互動的。

我個人的方法是:建立一個app,然後在Activity的代碼中把這些方法全部重寫出來,為每個方法打上斷點(或者日誌輸出),Debug進行調試,就基本上明白了什麼時候會被調用。

<三>Activity的啟動和Activity之間的資料傳遞

這裡我們需要用到一個對象Intent,Intent是Android程式中各組件之間進行互動的一種重要方式,它一般可被用於啟動活動、啟動服務、以及發送廣播等情境,關於它的用法後面再詳細說。

1. 簡單的啟動新的Activity

使用的方法:startActivity(Intent)

樣本:

Intent _intent = new Intent();_intent.setClass(MainActivity.this, ActivityB.class);startActivity(_intent);

//這個調用方法也可以寫成

Intent _intent2 = new Intent(MainActivity.this,ActivityB.class);
startActivity(_intent2);

執行個體化一個Intent對象,然後指定從當前的MainActivity這個活動,跳轉到ActivityB這個活動。

2. 啟動新的Activity,並有傳回值

使用方法:public void startActivityForResult(Intent intent, int requestCode),注意第二個參數:requesCode,這個參數類似於當初特工接頭時的暗號,

樣本:

  1. 應用從活動MainActivity跳轉到ActivityC,並請求一個字串;

  2. 在活動Activity中操作,關閉活動ActivityC時,返回請求的字串給MainActivty;

  3.活動MainActivity擷取字串。

    class ButtonActivitiesClickListener implements OnClickListener {        @Override        public void onClick(View v) {             if (v.getId() == R.id.btnSkipToC) {             Intent _intent = new Intent();             _intent.setClass(MainActivity.this, ActivityC.class);                         startActivityForResult(_intent, 100);                         }        }    }

注意,這裡就是啟動新的活動ActivityC,暗號requestCode是100。

在活動ActivityC中,點擊關閉按鈕時用void setResult (int resultCode, Intent data)傳回請求的字串,

    class ButtonActivityAListener implements OnClickListener {        @Override        public void onClick(View v) {            if (v.getId() == R.id.btnreturn) {                Intent _intent = new Intent();                EditText editText = (EditText) findViewById(R.id.edittext_first);                String inputStr = editText.getText().toString();                _intent.putExtra("dashenzaijia", inputStr);                setResult(Activity.RESULT_OK, _intent);                finish();            }        }    }

備忘:Intent.putExtra(String name, String value)類似於一個資料字典,這個Intent就是ActivityC返回字串給MainActivity的載體,name就是鍵,finish()方法類似於winform中的Close();

關閉活動ActivityC後,然後再MainActivity中,有一個虛方法,重載一下,然後從這個方法裡面擷取ActivityC的傳回值,如下:

    @Override    protected void onActivityResult(int arg0, int arg1, Intent arg2) {        // TODO Auto-generated method stub        super.onActivityResult(arg0, arg1, arg2);        if (arg0 == 100 && arg1 == Activity.RESULT_OK) {            String returnValue = arg2.getStringExtra("dashenzaijia");            TextView view = (TextView) this.findViewById(R.id.textview_showresult);            if (!returnValue.isEmpty()) {                view.setText("來自Activity C的值:" + returnValue);            } else {                view.setText(null);            }        }    }

第一個參數就是當初定義的兩個活動之間的暗號,第二個參數是跳轉後頁面的關閉時的結果,類似於C# 裡面表單關閉時的DialogResult,第三個參數就是傳回值的載體。

 

關於Activity的最基本的一些知識就說完了。

Android基礎學習第二篇—Activity

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.