菜鳥面試第一天之Android四大組件

簡單的Activity的生命週期

必須調用的三個方法:onCreate()------------->onStart()--------------------->onResume().,用AAA表示

AAA-->onFreeze()-------------->onPause()---------------->onStop()----------->onRestart()------------>onStart(),onResume()..

2)用戶點擊Home,Activity調用順序如下

AAA------>onFreeze()-------------->onPause()-------->onStop()------->Maybe----------->onDestroy----Maybe-->

3)調用 finish(),Activity調用順序如下AAA---->onPause()----->onStop()---->onDestory();

4)在Activity上顯示dialog,Activity調用順序如下   AAA

5)在父Activity上顯示透明的或非全屏的Activity,Activity調用順序如下


void onCreate(Bundle saveInstanceState) 、void onstart()  、void onRestart() 、void onResume()、void onPause()、void onstop()、

void onDestroy();這個七個方法定義了Activity的完整生命週期。實現這些方法可以幫助我們監視其中三個嵌套生命週期循環;

Activtiy的完整生命週期自第一次調用onCreate()開始,直至調用onDestroy()爲止。Activity在onCreate中設置所有的

全局狀態完成初始化,而在onDestroy()中釋放所有系統資源。例如:如果

Activity有一個線程在後臺運行從網絡下載數據,它會在onCreate()創建線程,而在onDestroy()銷燬線程。

Activity的可視生命週期自onStart()調用開始直到相應的onstop()調用結束。在此期間,用戶可以在Activity,儘管它也許不是位於前臺

或者也不許進行交互。在這兩個方法之間,我們可以保留用來向用戶顯示這個Activity所需的資源。


引入 廣播

onStart()中註冊一個 BroadcastReceiver來監控會影響UI的變化,而在onStop()中來注消。

理解註冊廣播的幾種方式,這些方式有何缺點?請談談Android引入廣播機制的用意。

           在Android下,想要接收廣播信息,那麼廣播接收器就得我們自己來實現了,我們可以繼承BroadcastReceiver,就可以

有一個廣播接收器了。有個接收器還不夠,我們還得重寫BroadcastReceiver裏面的onReceiver方法,當來廣播的時候我們要幹

什麼,這就要我們自己來實現,不過我們可以搞一個信息防火牆,具體的代碼:

          public   class  SmsBroadCastReceiver  extends   BraodcastReceiver{

                    @override

                    public void onReceive(Context context,Intent intent){

                        Bundle  bundle = itent.getExtras();

                        Object[] object=(Object)bundle.get("pdus");

                         SmsMessage   sms[]=new SmsMessage[object.length];

                        for(int i=0;i<object.length;i++){

                                 sms[0]=SmsMessage.createFromPdu();

                               Toast.makeText(context,"來自"+sms[i].getDisplayOriginatingAddress()+"的消息是:"+sms[i].getDisplayMessageBody,

                                Toast.Length_SHOT).show();

                            

                         }

                           //終止廣播,在這裏我們可以稍微處理,根據用戶輸入的號碼可以實現短信防火牆

                             abortBroadCast();

                   } 

}

                //當實現了廣播接收器,還要設置廣播接收器接收廣播信息的類型,這裏是信息:

               Android.provider.Telephony.SMS_RECEIVED

             我們就可以把廣播接收器註冊到系統裏面,可以讓系統知道我們有個廣播接收器。這裏有兩種,一種是代碼的動態註冊:

              //生成廣播處理

              smsBroadCastReceiver  =new smBroadCaseReceiver();

              //實例化過濾器並設置要過濾的廣播

              IntentFilter     intentFilter=  new IntentFilter("android.provider.Telephony.SMS_RECEIVED");

            //註冊廣播

             BroadCastReceiverActivity.this.registerReceiver(smsBroadCastReceiver,intentFilter);

           一種是AndroidManifest.xml中配置廣播

           

<?xml version="1.0"  encoding="utf-8">

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

        package="spl.broadCastReceiver"

        android:versionCode="1"

        android:versionName="1.0">

         <application  android:icon="@drawable/icon"  android:label="@string/app_name">

                    <activity android;name=".BroadCastReceiverActivity"

                                     android:label="@string/app_name">

                                     <intent-filter>

                                                       <action   android:name="android:itent.action.MAIN"/>

                                                       <categroy  android:name="android.intent.category.LAUNCHER"/>

                                     </intent-filter>

                                 







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