BindService
来源:互联网 发布:广安广电网络 编辑:程序博客网 时间:2024/05/16 01:14
Service是程序后台运行的体现,需要在Androidmanifest文件中注册。示例:后台播放音乐和天气类软件的前台Service。
首先Service和Activity都是运行在主线程里的,另外Service与线程一点关系都没有。
启动方式有startService和bindService两种。以bindService的方式启动Service时可以与Activity进行交互,所以只写这种用法。
//MainActivity.javapublic class MainActivity extends Activity implements OnClickListener{ Button btn1,btn2,btn3,btn4; Intent intent1; MyService service; /*--*/ ServiceConnection conn = new ServiceConnection() { @Override/*Activity与Service异常解除关联时执行此方法*/ public void onServiceDisconnected(ComponentName arg0) { // TODO Auto-generated method stub } @Override/*Activity与Service关联时执行此方法*/ public void onServiceConnected(ComponentName arg0, IBinder binder) { // TODO Auto-generated method stub /*下面语句的作用就是当Activity与Service关联时获取该Service对象(总不能NEW一个Service对象用吧)*/ service=((MyService.MyBinder)binder).getService(); System.out.println("Conn--->onServiceConnected()"); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn1=(Button) findViewById(R.id.button1); btn2=(Button) findViewById(R.id.button2); btn3=(Button) findViewById(R.id.button3); btn4=(Button) findViewById(R.id.button4); btn1.setOnClickListener(this); btn2.setOnClickListener(this); btn3.setOnClickListener(this); btn4.setOnClickListener(this); } @Override public void onClick(View arg0) { // TODO Auto-generated method stub switch(arg0.getId()) { case R.id.button1: /*用intent关联Activity与Service并通过bindService启动服务*/ intent1 = new Intent(MainActivity.this,MyService.class); bindService(intent1,conn,Service.BIND_AUTO_CREATE); break; case R.id.button2: service.Paly(); break; case R.id.button3: service.Stop(); break; case R.id.button4: /*解除绑定*/ unbindService(conn); break; } }}
//MyService.javapublic class MyService extends Service{ /*在MyService中写一个MyBinder内部类我感觉是介于ServiceConnection中方法的参数*/ public class MyBinder extends Binder{ public MyService getService(){ return MyService.this; } } public void Paly(){ System.out.println("Service--->Paly()"); } public void Stop(){ System.out.println("Service--->Stop()"); } @Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub System.out.println("Service--->onBind()"); return new MyBinder(); } @Override public void unbindService(ServiceConnection conn) { // TODO Auto-generated method stub System.out.println("Service--->unbindService()"); super.unbindService(conn); } @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); System.out.println("Service--->onCreate()"); } @Override public int onStartCommand(Intent intent, int flags, int startId) { // TODO Auto-generated method stub System.out.println("Service--->onStartCommand()"); return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); System.out.println("Service--->onStartCommand()"); }}
0 0
- bindService
- BindService
- BindService
- BindService
- BindService
- BindService
- bindService
- BindService
- BindService()
- 理解BindService
- BindService总结
- AIDL bindService
- bindservice用法
- 10 BindService
- bindService用法
- startService bindService
- BindService详解
- bindservice 理解
- 一名优秀的技术管理者应该具备怎样的素质
- ios缓存策略
- 《我是一只IT小小鸟》读书笔记
- window.location方法获取URL及window.location.assign(url)和replace(url)区别
- ibatis源码分析—配置文件解析(1)
- BindService
- 怎样破解IIS最大上传值为200K的限制
- Unity3D研究院编辑器之脚本生成Preset Libraries
- 关于Selector方法需要多个参数的问题解决方法
- 【Oracle】Oracle 12c DB In-Memory入门实验手册(三)
- amaze框架
- tfs--淘宝文件系统扩容
- QSettings 百度百科
- JS提交表单带滚动条