Android-服务Service(1)-介绍及startService调用
来源:互联网 发布:final cut 7 for mac 编辑:程序博客网 时间:2024/06/06 12:59
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
0 0
- Android-服务Service(1)-介绍及startService调用
- Android Service 服务 —— startService()
- Android Service 之启动服务( startService() )
- Service-startService启动的服务(1)
- Android Service 服务(一)—— startService方式
- android service 之startService(...)
- Service startService方式的服务
- Android 同一个Service已经启动再多调用startService
- Android startService开启服务
- Android中startService的使用及Service生命周期
- Android中startService的使用及Service生命周期
- Android中startService的使用及Service生命周期
- android中Service使用startService
- Android Service详解(二)---StartService
- Android-Service (基本知识,生命周期,实例-startService 启动的服务音乐播放器后台服务播放)
- Android-Service (基本知识,生命周期,实例-startService 启动的服务音乐播放器后台服务播放)
- Android调用web service服务
- Android调用web service服务
- java web工程启动socket服务
- git 命令(非常全)
- spark中sortByKey后存储为单个文件
- 用户权限
- LINUX环境中 JDK 的下载
- Android-服务Service(1)-介绍及startService调用
- 使用svnsync实现已有版本库的镜像
- JAVA面试题整理
- 【模拟】洛谷 P1427 小鱼的数字游戏
- Android应用开发———Android中的布局管理器
- 走近人脸检测(4)——传统人脸检测技术和 CNN 的结合
- 【C#】SQLite操作过程
- Spark性能优化指南——高级篇
- Java发送邮件