1.StartService 和BindService 结合使用
.先StartService 启动服务,再BindService 绑定服务
2.StartService 启动服务只能通过StopService关闭,这个时候bindService,不会创建新的的服务。只会调用onBind()
3.关闭界面,Service不会关闭,只后解绑。
不会调用ondestory()方法,只会调用onUnbind(),
再次进入界面,先StartService ,BindService。不会创建新的服务。
(不会调用onCreate()),只会调用onstartcommand()
及onBind()
onstart()
onstop()解绑
广播 四大组件之一 BroadcastReceiver
广播机制:传递信息 单向 群发
创建BroadcastReceiver
1.创建一个类继承BroadcastReceiver
MyReceiver extends BroadcastReceiver
从写onReceive()
2.在清单文件中进行注册
android:name=".MyReceiver"(包.类名)
>
eg:发送短信 接收系统发送的广播
实现:
清单文件中:
1.添加接收短信的权限
2.设置广播接收者的过滤条件
注册方式一:清单文件中进行注册
android:name=".MyReceiver"
android:enabled="true"
android:exported="true" >
//过滤条件
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();
注意:
进程不存在 接收不到广播
灵活使用
应用本身也可发送广播 ,应用本身可以接收自己发送的广播
Intent intent=new Intent("www.com.xinbo");//添加过滤条件
//传递信息
intent.putExtra("broadcast", "sssss");
//发送广播
sendBroadcast(intent);
添加自定义的过滤条件
IntentFilter filter = new IntentFilter("www.com.xinbo"); code
Intent
显示意图:指明跳转方向 只能跳转当前应用的Activity
隐式意图:
Activity
code:
跳转:
Intent intent = new Intent();
intent.setAction("openActivity");
startActivity(intent);
清单文件中为目标界面添加过滤条件
category :类别
<category android:name="android.intent.category.DEFAULT"/>
区别:
隐式意图可以打开符合过滤条件的Activity
也可以打开其他应用中符合过滤条件的Activity,打开多个,且有对话框选择目标界面
显示意图:只能打开当前应用的Activity 指明方向