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從此解得相思苦。
主要代碼:
- //綁定時間監聽
- btn1.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- Intent _inIntent = new Intent(); //創建一個Intent對象
- _inIntent.putExtra("xiaozhu", "你好啊,我的朋友!"); //像Intent加入信息-鍵值對
- _inIntent.setClass(FirstActivity.this, SecondActivity.class); //設置目標Activity
- FirstActivity.this.startActivity(_intent); //啓動跳轉到下一個Activity
- }
- });
我們的Intent還是很強大的,下面我們用Intent實現撥號功能,請看代碼:
- btn3.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- Intent _intent = new Intent(); //創建一個Intent對象
- _intent.setAction(Intent.ACTION_DIAL); //設置Intent動作,就是需要Instent做出什麼樣的反應
- _intent.setData(Uri.parse("tel:13787669477")); //設置電話號碼,參數
- FirstActivity.this.startActivity(_intent); //啓動跳轉,跳轉到打電話界面
- }
- });
當我們實現應用的時候,會出現各種情況,比如我們在寫微博的時候,突然來電話了,我們手機就會跳轉到接電話的Actvity,這樣我們的微博應用就被覆蓋了,當我們打電話結束後,我們還想寫的時候,如果我們以前寫的全沒了,這就會讓我們有種發狂的感覺,所以我們強大的Activity就出了奇招,onSaveInstanceState(Bundle outState),就是保存我們Activity狀態的方法,很好的強大,當然既然有存的方法,那麼肯定有取的方法了,onRestoreInstanceState(Bundle savedInstanceState),就是我們Activity取得狀態數據的方法,這樣我們就不必擔心我們輸入的數據丟失了。
主要代碼:
- protected void onSaveInstanceState(Bundle outState) {
- // TODO Auto-generated method stub
- //super.onSaveInstanceState(outState);
- String etString = et1.getText().toString(); //取得輸入框中數據,et1爲EditText
- outState.putString("byxiaozhu", etString); //將當前Activity的狀態保存在outStat,參數是鍵值對
- }
- @Override
- protected void onRestoreInstanceState(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- //super.onRestoreInstanceState(savedInstanceState);
- String state = savedInstanceState.getString("byxiaozhu"); //取出Activity數據
- et1.setText(state); //將取出數據顯示在輸入框中
- }
今天學習到此,下次繼續,把每天學到的東西,記錄下來,靜下心往前走。。。。。