Android Service控件用法实例分析
程序员文章站
2024-03-04 18:08:12
本文实例讲述了android service控件用法。分享给大家供大家参考,具体如下:
1、service是一个应用程序的组件
2、service没有图形化界面
3、...
本文实例讲述了android service控件用法。分享给大家供大家参考,具体如下:
1、service是一个应用程序的组件
2、service没有图形化界面
3、用来处理耗时比较长的功能(下载、播放mp3)
4、更新contentprovider、intent以及系统的启动
servcie不是一个单独的进程,不是一个线程
定义一个service比较简单,只要继承service类,实现其生命周期的方法即可。一个定义好的service必须在androidmanifest.xml文件中通过<service>声明才能使用
<service android:name="myservice"> <intent-filter> <action android:name="hb.com.myservice"/> </intent-filter> </service>
备注:myservice一定要是继承了service类的,并且名称和类名是一致的
action的名称是自定义的,只要在bindservice或者操作intent的时候就能够被捕获
public class myservice extends service { public class mybinder extends binder{ public myservice getmyservice(){ return myservice.this; } } public void test(){ system.out.println("test"); } @override public ibinder onbind(intent intent) { // todo auto-generated method stub system.out.println("onbind"); return new mybinder(); } @override public void oncreate() { // todo auto-generated method stub system.out.println("oncreate"); super.oncreate(); } @override public boolean onunbind(intent intent) { system.out.println("i am unbind"); return super.onunbind(intent); } }
public class mainactivity extends activity { private static final string myservice = "hb.com.myservice"; private boolean flag = false; //bindservice()方法需要serviceconnection接口作为参数,所以定义了这个变量,目的是为了实现里面的两个方法 serviceconnection conn = new serviceconnection() { @override public void onservicedisconnected(componentname name) { system.out.println("onservicedisconnected"); } @override public void onserviceconnected(componentname name, ibinder service) { system.out.println("onserviceconnected"); mybinder mybinder = (mybinder)service; myservice myservice = mybinder.getmyservice(); myservice.test(); } }; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); findviewbyid(r.id.start).setonclicklistener(new button.onclicklistener(){ @override public void onclick(view v) { intent intent = new intent(); intent.setaction(myservice); //先调用myservice的oncreate()方法,然后调用onbind()方法,最后调用onserviceconnected()方法 //因此ibinder返回的值就是通过onbind()方法返回的对象,定义getmyservice()方法是为了得到myservice对象,用户在这个类中添加自己需要的一些方法,这样可以做一些逻辑处理 bindservice(intent, conn, service.bind_auto_create); flag = true; } }); findviewbyid(r.id.stop).setonclicklistener(new button.onclicklistener(){ @override public void onclick(view v) { if(flag){ //取消绑定事件,会调用myservice的onunbind()方法,但是不会调用onservicedisconnected()这个方法,原因不明 unbindservice(conn); flag = false; } } }); } }
更多关于android相关内容感兴趣的读者可查看本站专题:《android文件操作技巧汇总》、《android编程开发之sd卡操作方法汇总》、《android开发入门与进阶教程》、《android资源操作技巧汇总》、《android视图view技巧总结》及《android控件用法总结》
希望本文所述对大家android程序设计有所帮助。
上一篇: Jexcel实现按一定规则分割excel文件的方法
下一篇: Android 更新UI的方法汇总