Service
2016-03-11 13:53
267 查看
Service是Android系统的后台服务组件,适用于开发无界面、长时间运行的应用功能,特点是没有用户界面,比Activity 的优先级高,不会轻易被Android系统终止。用于进程间通信。Service是运行在后台的Android组件,位于android.app包下。当应用程序不需要显示外在界面但是需要其在后台运行时,可以使用Service。Service不能自运行,它需要通过某一个Activity或者其他Context对象来调用,如
Service生命周期
Service的启动是通过调用Context.startService()启动Service,通过调用Context.stopService()或Service.stopSefl()停止Service是由其他的组件启动的,但停止过程可以通过其他组件或自身完成。
绑定方式:通过context.bindService()方式启动。使用Service的组件通过Context.bindService()建立服务链接,通过Context.unbindService()停止服务链接。同一个Service可以绑定多个服务链接,这样可以同时为多个不同的组件提供服务。
启动方式和绑定方式的结合
:这两种使用方法并不是完全独立的在某些情况下可以混合使用
,以MP3播放器为例,在后台的工作的Service通过Context.startService()启动某个特定音乐播放,但在播放过程中如果用户需要暂停音乐播放,则需要通过Context.bindService()获取服务链接和Service对象,进而通过调用Service的对象中的函数,暂停音乐播放过程,并保存相关信息。在这种情况下,如果调用Context.stopService()并不能够停止Service,需要在所有的服务链接关闭后,Service才能够真正的停止
。
启动Service一般需要在AndroidMenifest.xml文件中注册这个Service,此时需要在AndroidManifest.xml中增加对Service的说明。
示例工程演示了创建简单的Service及调用Service的方法。需要注意如下几点:
A,Service继承自Android.app.Service。需要import android.app.Service
B,在代码中一般需要有重写的onBind方法
C,需要重写了其onStart()、onDestroy()等方法
D,需要编制启动相应Service的Activity类 ,通过start方式、bind方式、通过intent调用等方式来启动Service
E,在AndroidManifest.xml中添加对刚才创建的Service的引用
Context.startService()和
Context.bindService()等 。
Service生命周期
Service的启动是通过调用Context.startService()启动Service,通过调用Context.stopService()或Service.stopSefl()停止Service是由其他的组件启动的,但停止过程可以通过其他组件或自身完成。
private void startService() { Intent i = new Intent(主Activity类文件名.this, Service类文件名.class); this.startService(i);//启动 } private void stopService() { Intent i = new Intent(主Activity类文件名.this, Service类文件名.class); this.stopService(i); //停止 }
绑定方式:通过context.bindService()方式启动。使用Service的组件通过Context.bindService()建立服务链接,通过Context.unbindService()停止服务链接。同一个Service可以绑定多个服务链接,这样可以同时为多个不同的组件提供服务。
启动方式和绑定方式的结合
:这两种使用方法并不是完全独立的在某些情况下可以混合使用
,以MP3播放器为例,在后台的工作的Service通过Context.startService()启动某个特定音乐播放,但在播放过程中如果用户需要暂停音乐播放,则需要通过Context.bindService()获取服务链接和Service对象,进而通过调用Service的对象中的函数,暂停音乐播放过程,并保存相关信息。在这种情况下,如果调用Context.stopService()并不能够停止Service,需要在所有的服务链接关闭后,Service才能够真正的停止
。
启动Service一般需要在AndroidMenifest.xml文件中注册这个Service,此时需要在AndroidManifest.xml中增加对Service的说明。
<Service Android:enable=“true” Android:name = “.创建的Service名字”
示例工程演示了创建简单的Service及调用Service的方法。需要注意如下几点:
A,Service继承自Android.app.Service。需要import android.app.Service
B,在代码中一般需要有重写的onBind方法
C,需要重写了其onStart()、onDestroy()等方法
D,需要编制启动相应Service的Activity类 ,通过start方式、bind方式、通过intent调用等方式来启动Service
E,在AndroidManifest.xml中添加对刚才创建的Service的引用
public class MusicService extends Service{ private MediaPlayer mp; @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; } @Override public void onCreate() { super.onCreate(); mp=MediaPlayer.create(this,R.raw.song1); } @Override public void onStart(Intent intent, int startId) { super.onStart(intent, startId); mp.start(); } @Override public void onDestroy() { super.onDestroy(); mp.stop(); } }
public class Music extends Activity { /** Called when the activity is first created. */ Button start,stop; TextView songName; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); findView(); start.setOnClickListener(startlis); stop.setOnClickListener(stoplis); songName.setText("Music"); } private OnClickListener startlis=new OnClickListener(){ public void onClick(View v) { // TODO Auto-generated method stub startService(new Intent(Music.this, MusicService.class)); //启动服务 } }; private OnClickListener stoplis=new OnClickListener(){ public void onClick(View v) { // TODO Auto-generated method stub stopService(new Intent(Music.this,MusicService.class)); //停止服务 } }; public void findView(){ start=(Button)findViewById(R.id.start); stop=(Button)findViewById(R.id.stop); songName=(TextView)findViewById(R.id.songName); } }
相关文章推荐
- sql日期按月份和年份分组查询
- 调查表与调查结果分析
- gradle存放目录
- RMAN-03009 ORA-19809 ORA-19804
- Linux 命令
- 节省苹果手机电源,优化APP耗电
- Cgroups4 子系统的实现
- Cgroups5 devices子系统
- Cgroups6 freezer子系统
- HTTP协议基础
- JS验证电话和传真号码格式
- android修改xml文档—DOM方式
- 【容斥原理】HDU2841 Visible Trees
- ORACLE用GROUP BY 来分组日期字段 按月分组
- 项目管理参考及书籍
- Spring框架的配置
- Cgroup3 文件系统
- SuperSocket中的Server是如何初Initialize的
- eclipse打开hadoop2.7源码
- css 动画 transition及animation