菜鸟面试第一天之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>

                                 







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值