1.StartService 和BindService 结合使用

.先StartService 启动服务,再BindService 绑定服务

2.StartService 启动服务只能通过StopService关闭,这个时候bindService,不会创建新的的服务。只会调用onBind()

3.关闭界面,Service不会关闭,只后解绑。

 不会调用ondestory()方法,只会调用onUnbind(),

再次进入界面,先StartService ,BindService。不会创建新的服务。

(不会调用onCreate()),只会调用onstartcommand()

及onBind()

onstart()

onstop()解绑

spacer.gif

广播  四大组件之一  BroadcastReceiver

广播机制:传递信息    单向  群发

创建BroadcastReceiver

1.创建一个类继承BroadcastReceiver 

MyReceiver extends BroadcastReceiver 

从写onReceive()

2.在清单文件中进行注册

      <receiver

android:name=".MyReceiver"(包.类名)

></receiver>

        

eg:发送短信     接收系统发送的广播   

实现:

清单文件中:

1.添加接收短信的权限

<uses-permission android:name="android.permission.RECEIVE_SMS"/>

2.设置广播接收者的过滤条件           

注册方式一:清单文件中进行注册

<receiver

            android:name=".MyReceiver"

            android:enabled="true"

            android:exported="true" >

            <intent-filter >//过滤器

            //过滤条件

                <action android:name="android.provider.Telephony.SMS_RECEIVED"/>

            </intent-filter>

        </receiver>

code:   

public void onReceive(Context context, Intent intent) {

        //接受到广播时调用

        Log.e("onReceive", "onReceive"+"接受到广播");

 }

过滤条件:

 频率(电台的频率(50HZ))

注意:

进程不存在 ,一样可以接收到广播

注册二:代码中注册   

1.在onstart()注册广播

        myReceiver = new MyReceiver();

        //添加过滤条件

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

//filter.addAction("android.provider.Telephony.SMS_RECEIVED");

        registerReceiver(myReceiver, filter);

        super.onStart();

2.在onstop()注销广播

unregisterReceiver(myReceiver);

3.创建类继承BroadcastReceiver

重写onReceiver();

spacer.gif

注意:

进程不存在  接收不到广播

灵活使用  

应用本身也可发送广播 ,应用本身可以接收自己发送的广播

Intent intent=new Intent("");//添加过滤条件

//传递信息

intent.putExtra("broadcast", "sssss");

//发送广播

sendBroadcast(intent);

添加自定义的过滤条件

IntentFilter filter = new IntentFilter("");   code

<action android:name=""/>                    清单文件中

Intent

显示意图:指明跳转方向    只能跳转当前应用的Activity

隐式意图:

Activity

code:

跳转:

Intent intent = new Intent();

        intent.setAction("openActivity");

        startActivity(intent);

清单文件中为目标界面添加过滤条件

category :类别

 <intent-filter >

<action android:name="openActivity"/>

<category android:name="android.intent.category.DEFAULT"/>

</intent-filter>

区别:

隐式意图可以打开符合过滤条件的Activity

也可以打开其他应用中符合过滤条件的Activity,打开多个,且有对话框选择目标界面

显示意图:只能打开当前应用的Activity  指明方向