Android开发--Service开启,关闭,绑定,解除
Android应用程序中有一项非常重要的技术--Service,它没有运行界面,运行在后台,但是有一点非常重要,Service并不是一个单独的进程,同时也不是一个线程,用来处理耗时的动作。
Service有两种使用方法,一种是start和stop,另一种是绑定服务。
当使用的是第一种方法时,直到用户停止这个服务,Service才会停止,即使是用户关闭这个Activity(应用程序),Service也一样会在后台运行。
当用户使用的是第二种方法时,一旦用户解除绑定或者停止了这个Activity(应用程序),Service也自动停止了,即它是随着Activity的生命周期运行的。
下面的截图是对Service的测试画面:
一下是程序的源代码:
public class A_Service01 extends Activity {private Button button1;private Button button2;private Button button3;private Button button4;private MyService myService;private ServiceConnection serviceConnection=new ServiceConnection() {@Overridepublic void onServiceDisconnected(ComponentName name) {// TODO Auto-generated method stubmyService=null;Toast.makeText(A_Service01.this, "Service Failed", Toast.LENGTH_SHORT).show();}@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {// TODO Auto-generated method stub//myService=((MyService.MyBinder)service).getService();Toast.makeText(A_Service01.this, "Service Connected", Toast.LENGTH_SHORT).show();}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_a__service01);button1=(Button)findViewById(R.id.button1);button2=(Button)findViewById(R.id.button2);button3=(Button)findViewById(R.id.button3);button4=(Button)findViewById(R.id.button4);button1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubfinal Intent intent=new Intent(A_Service01.this,MyService.class);startService(intent);}});button2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubfinal Intent intent=new Intent(A_Service01.this,MyService.class);stopService(intent);}});button3.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubfinal Intent intent=new Intent(A_Service01.this, MyService.class);bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);}});button4.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubunbindService(serviceConnection); }});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.activity_a__service01, menu);return true;}}
public class MyService extends Service {/** 出现这句话的原因是下面重载的onBind方法需要一个返回值*/private MyBinder myBinder=new MyBinder();@Overridepublic IBinder onBind(Intent arg0) {// TODO Auto-generated method stubLog.d("MyService", "Myservice onBind");return myBinder;}@Overridepublic void onRebind(Intent intent) {// TODO Auto-generated method stubsuper.onRebind(intent);Log.d("MyService", "Myservice onRebind");}@Overridepublic boolean onUnbind(Intent intent) {// TODO Auto-generated method stubLog.d("MyService", "Myservice onUnbind");return super.onUnbind(intent);}@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.onCreate();Log.d("MyService", "Myservice onCreate");}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {// TODO Auto-generated method stubLog.d("MyService", "flags---->"+flags);Log.d("MyService", "startId---->"+startId);Log.d("MyService", "Myservice onStartCommand");return super.onStartCommand(intent, flags, startId);}@Overridepublic void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();Log.d("MyService", "Myservice onDestory");}public class MyBinder extends Binder{MyService getService(){return MyService.this;}}}
Android开发--Service开启,关闭,绑定,解除相关推荐
- Android开发Service之BindService
前言 一直使用 Qt 来进行桌面端和移动端开发,对 Android 开发并不熟悉,但是项目中往往又经常会用到 Android 原生开发的东西.本次收集了一些关于BindService相关的知识供自己学 ...
- Android开发--Service和Activity通过广播传递消息
Android的Service也运行在主线程,但是在服务里面是没法直接调用更改UI,如果需要服务传递消息给Activity,通过广播是其中的一种方法: 一.在服务里面发送广播 通过intent传送数据 ...
- Android开发下拉关闭图片
图片会跟随手指移动,只有是下滑时才会退出查看页面,其他情况会复位,直接当做ImageView使用即可,setViewCall方法是在下滑完成后要执行的操作,上,左,右,可自行扩展 onTouchEve ...
- Android开发之如何保证Service不被杀掉(broadcast+system/app)
Android开发之如何保证Service不被杀掉(broadcast+system/app) 序言 最近项目要实现这样一个效果:运行后,要有一个service始终保持在后台运行,不管用户作出什么操作 ...
- Android开发之如何保证Service不被杀掉(前台服务)
序言 最近项目要实现这样一个效果:运行后,要有一个service始终保持在后台运行,不管用户作出什么操作,都要保证service不被kill.参考了现今各种定制版的系统和安全厂商牛虻软件,如何能保证自 ...
- android服务开启线程,android之service与intentService的不同
不知道大家有没有和我一样,以前做项目或者练习的时候一直都是用Service来处理后台耗时操作,却很少注意到还有个IntentService,前段时间准备面试的时候看到了一篇关于IntentServic ...
- 正确姿势临时和永久开启关闭Android的SELinux
正确姿势临时和永久关闭Android的SELinux Android SELinux开发多场景实战指南目录: Android SELinux开发入门指南之SELinux基础知识 Andro ...
- android 47 service绑定
如果一个service已经启动了,activity和service绑定了在解除邦定,则这个service不会销毁,因为这个service不是这个Activity创建的. service生命周期: Ac ...
- Android(java)学习笔记171:服务(service)之绑定服务调用服务里面的方法
1.绑定服务调用服务里面的方法,图解: 步骤: (1)在Activity代码里面绑定 bindService(),以bind的方式开启服务 : bindServ ...
最新文章
- 错误:无法作为数据库主体执行,因为主体 dbo 不存在、无法模拟这种类型的主体,或您没有所需的权限...
- 使用IBMMQ时的那些事
- win8/Metro开发系列二 Xaml数据绑定
- UA MATH571B 试验设计 QE练习题1
- 熵值法计算权重有异常值_指标权重确定方法 1-熵值法
- 语句作用_3分钟短文:Laravel模型作用域,为你“节省”更多代码
- 容器赋能AI-人工智能在360私有云容器服务上的实践
- ExtJs六(ExtJs Mvc首页展示)
- 【JavaScript】一个同步于本地时间的动态时间
- 算法笔记_031:计算中值和选择问题(Java)
- [转载] windows下Python2.7 的 pyOpenGL模块安装
- 学习 灰色2017.12.08
- 预备篇:一.元器件选型及飞控电路设计
- 多个源文件进行编译,即 makefile 的编写
- MAX3485芯片资料整理
- springboot+基于微信小程序的心理测评与活动管理的设计与实现 毕业设计-附源码191752
- Codeforcs 1183B Equalize Prices
- BERT的优秀变体:ALBERT论文图解介绍
- 如何求地球上两点之间的最短距离_初中数学求线段之和最小的问题,知识点题型汇总...
- mysql碎片整理innodb_Innodb表碎片整理