Activity生命周期
一个对象从创建到销毁中间经历的状态
创建--->运行 onCreate onStart onResume
可见可操作
运行--->销毁 onPause onstop ondestory
运行--->停止(不可见 不可操作)
onPause onstop
停止--->恢复
onReStart onStart onResume
运行--->暂停 (可见 不可操作) onPause
暂停--->恢复 onResume
当Activity处于暂停或是停止状态的时候,更高优先级的应用需要内存时
activity可能会被终止
Service服务 运行在后台,没有界面
创建Service要素
1、继承service
2、清单文件中进行配置
android:name="com.example.ex_service.MyService"
包名.类名
启动服务:
调用startService(service );
注意:
第一次启动服务的时候,会调用onCreate onStartCommand
当服务没有被结束之前,多次点击只会调用onStartCommand方法
关闭服务:
调用stopService(service );
绑定服务:
调用bindService(service, conn, Context.BIND_AUTO_CREATE);
参数:
第一个:Intent对象
第二个:ServiceConnection对象(需要声明称成员变量)
第三个:Context.BIND_AUTO_CREATE
当我们绑定服务的时候,如果服务不存在,会自动创建
调用 oncreate onBind
解除绑定:
调用unbindService(conn);
调用 onUnBind onDestory
通过绑定去调用service中的方法步骤:
1、去声明一个普通类Mybinder,继承Binder
2、在类Mybinder类里面,调用service服务里的方法
3、创建一个Mybinder类型的对象
4、在OnBind()方法中,去返回Mybinder对象
5、在activity里的onServiceConnected中,去获取IBinder类型的对象
然后只需把它强转称Mybinder类型的对象就可以了
这样就能去调用Mybinder类型的对象里面的方法了
注意:
onBind()返回一个非空的IBinder对象时,
onServiceConnected这个方法才会被调用
BroadCastReciver广播接收者
特性:单向 群发
广播的创建的要素:
1、创建的类继承BroadcastReceiver
2、重写onReceive()方法
3、在清单文件进行配置
android:name="com.example.ex_broadcastreciver.MyReceiver"
包名.类名
场景:
1、接收外部的广播
收短信
权限
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
在清单中进行配置
<intent-filter >
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
2、创建应用 自己发广播
Intent intent = new Intent();
//设置广播的过滤条件
intent.setAction("www.sss.com");
//发送广播
sendBroadcast(intent );
跨进程通讯
在代码中去设置广播
1) MyReceiver receiver = new MyReceiver();
2) 在onstart()方法中注册:
IntentFilter filter = new IntentFilter();
filter.addAction("www.sss.com");
3) 注册广播接收者
registerReceiver(receiver , filter );
4) 在onstop()注销广播
super.onStop();
unregisterReceiver(receiver);
两种广播的区别:
xml :只要条件匹配,就会触发(不管应用是否开启)
code:灵活控制
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。