-
ContentProvider大纲查看全部
-
Service常用方法查看全部
-
UNBind的时候不能多次调用,否则出错查看全部
-
start方式的启动时:第一次创建Service需要调用onCreate(),而后调用onStartCommand(),不管调用了多少次的onStartCOmmand(),停止的时候只调用一次onDestroy();查看全部
-
两种启动方式的特点查看全部
-
Service两种启动方式的生命周期查看全部
-
Service 的两种类型以及启动关闭服务的方法查看全部
-
Service概述查看全部
-
StartService和BindService 1. StartService启动后启动源和Service没有关系,BindService调用bindService()启动service后启动源和Service相关,在退出activity之前必须要调用unbindService()取消绑定。 2. startService()和bindService()可以混合使用。如果我们想要Activity退出了,但是服务还在继续,那么我们就要选用startService的方式来启动服务,如果我们想要在Activity中获取Service对象,那么我们需要用bindService方法结合ServiceConnection来启动Service,但是这种方法,由于将Service和Activity绑定在了一起,所以当Activity退出的时候,我们需要unbindService()来停掉Service,否则就会报错。查看全部
-
BindService 通过bindService()得到的Service是和启动源(Activity)绑定在一起的,在Activity退出的时候需要调用unbindService()进行解绑定(停止)。 调用bindService()时会调用到目标Service的onBind()函数,通过IBinder接口实例,返回一个ServiceConnection对象给启动源。然后启动源可以通过ServiceConnection对象得到启动的Service对象 1. 使用方法: (1)重写onBind()方法 public IBinder onBind(Intent intent) { return new MyBinder(); } (2)MyBinder是继承自Binder类的,而Binder类实际上实现了IBinder接口 public class MyBinder extends Binder{ public MyBindService getService(){ return MyBindService.this; //返回这个Service的实例 } } (3)在启动源的Activity中创建一个ServiceConnection实例 ServiceConnection conn = new ServiceConnection() { //当启动源跟service的连接意外丢失的时候会调用 //比如service崩溃了,或被强行杀死了 public void onServiceDisconnected(ComponentName name) { } //当启动源跟service成功连接之后会调用这个方法 public void onServiceConnected(ComponentName name, IBinder service) { // TODO Auto-generated method stub MyBindService myService = ((MyBinder)service).getService(); } }; (4)bindService()中指定ServiceConnection conn参数 bindService(intent2, conn, Service.BIND_AUTO_CREATE);查看全部
-
StartService 1. 使用方法: (1)写一个MyStartService继承自Service,重写它的各种方法onCreate()、onStartCommand()、onDestory() (2)在AndroidManifest.xml中注册这个Service (3)在主线程Activity中通过startSerice(intent)方式启动 (4)通过stopService(intent)方式停止 2. 关于StartService (1)启动方式是通过启动intent方式实现 (2)启动之后该Service和启动源没有关系,即使主线程退出了,service还会继续运行查看全部
-
Service的特点 1. Start方式的特点: Service启动后就与启动源没有关系了。 2. Bind方式的特点: 可以通过IBinder接口实例来得到ServiceConnection对象给启动源查看全部
-
Service的启动和生命周期 1. 左边是通过startService()开启service,右边是通过bindService() 2. 左边 (1)onStartCommand()之后service就会运行,可以通过启动源调用stopService()来停止service (2)stopService的调用会调用onDestroy() 3. 右边 (1)bindService()会自动调用onCreate() (2)可以通过unbindService()来unbind这个service,然后onUnbind()会自动被调用查看全部
-
Service 1. 定义: 后台运行,不可见没有界面 优先级高于activity 一般service不会被系统干掉,就算被干掉了也会自启 注意: 运行在主线程,不能用它来做耗时的操作。可以在service中开辟一个线程来做耗时操作(handler,synctask) 2. 分类(如图) 本地服务和远程服务 数据的操作都要通过定义IBinder接口来实现查看全部
-
BroadcastReceiver——有序广播 1. 发送一个有序广播 Intent intent2 = new Intent(); intent2.putExtra("msg", "this is a ordered broadcast"); intent2.setAction("Broadcast_one"); //设置一个filter sendOrderedBroadcast(intent2, null); //发送一个有序广播 2. 有序广播可以被截断,也可以在中间被处理 利用Bundle类就可以处理广播 Bundle bundle = new Bundle(); bundle.putString("xzhang76", "Broadcast has been processed in Receiver1"); //xzhang76是对应的key,后面是value setResultExtras(bundle); 下一个接收者接收前面已经处理的广播: Bundle bundle = getResultExtras(true); String msg = bundle.getString("xzhang76"); //从对应的key中得到数据 BroadcastReceiver——异步广播 1. 就是说接收广播是异步的,可以先发送广播,再注册接收者。 sendStickyBroadcast(intent3); 动态注册一个接收者 IntentFilter intentFilter = new IntentFilter("Broadcast_Three"); //设置过滤 MyBroadcastReceiver3 receiver3 = new MyBroadcastReceiver3(); registerReceiver(receiver3, intentFilter); 这就意味着广播是粘性的。 注意:异步广播也是不能截断的。 4. 注意一点 动态注册的接收者需要在程序结束时销毁掉 unregisterReceiver(receiver3);查看全部
举报
0/150
提交
取消