您的位置:首页 > 移动开发 > Android开发

Android-服务Service(1)-介绍及startService调用

2017-05-10 10:55 806 查看

1. 前言

Service和Activity是类似的,不同点就是Service在后台操作,不与UI进行交互,不依赖于任何用户界面,比如启动服务播放音乐

尽管Service在后台运行,但它仍然运行在Main Thread中,因此不能用来做耗时的动作,那么只能在服务中开一个线程,用来做耗时动作

2. 开发步骤

1. 继承Service类

public class MyService extends Service {
public MyService() {
}

@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}
public int onStartCommand(Intent intent,int flags,int startID){
Toast.makeText(this,"Service Started",Toast.LENGTH_LONG).show();
return  START_STICKY;
}
public  void onDestory(){
super.onDestroy();
Toast.makeText(this,"Service Destoryed",Toast.LENGTH_SHORT).show();
}
}


2. 配置清单

在AndroidMainifest.xml里面配置该Service,当然在Android Studio里面可以自动配置了

<service
android:name=".MyService"
android:enabled="true"
android:exported="true"></service>


当然,如果希望本服务被其他的应用程序使用

<service android:name=".MyService">
<intent-filter>
<action android:name="net.learn2develop.MyService"/>
</intent-filter>
</service>


3. 启动服务

启动服务可以通过调用Context.startService()或者Context.bindService()方法启动服务。

其中startService()方法启动服务,访问者与服务之间没有关联,即使访问者退出了,服务仍在运行。

而bindService()方法启动服务,那么访问者与服务绑定在一起,访问者退出后,服务也就终止了。

先说第一种startService方法:(第二种下篇)

Intent intent=new Intent(getBaseContext(),MyService.class);
//启动服务
startService(intent);
//停止服务
stopService(intent);


3. 例子

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Intent intent=new Intent(getBaseContext(),MyService.class);
Button btstart=(Button)findViewById(R.id.button1);
Button btstop=(Button)findViewById(R.id.button2);
btstart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//启动服务
startService(intent);
}
});
btstop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//停止服务
stopService(intent);
}
});

}
}




分别按下启动,启动,停止,启动服务时,logcat显示为

可以看到:

当首次启动服务,会执行onCreate()以及onStartCommand()函数

当服务以及被创建下再次启动服务,只会执行onStartCommand()函数



相关链接

Android-服务Service(1)-介绍及startService调用

Android-服务Service(2)-bind绑定Service及两种生命周期

Android-服务Service(3)-IntentService
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐