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
相关文章推荐
- Android -- service的开启方式, start开启和绑定开启服务,调用服务的的方法, aidl调用远程服务
- Android -- service的开启方式, start开启和绑定开启服务,调用服务的的方法, aidl调用远程服务
- Android服务混合调用startService(intent)和bindService(intent,connection,BIND_AUTO_CREATE)
- Android系统在新进程中启动自定义服务过程(startService)的原理分析
- Android系统在新进程中启动自定义服务过程(startService)的原理分析
- Android窗口管理服务WindowManagerService的简要介绍和学习计划
- Android系统在新进程中启动自定义服务过程(startService)的原理分析
- Android系统在新进程中启动自定义服务过程(startService)的原理分析
- Android系统在新进程中启动自定义服务过程(startService)的原理分析 (上)
- 调用android非unbind的服务中的方法(不使用bindService启动的服务)
- Android窗口管理服务WindowManagerService的简要介绍和学习计划
- Android服务启动之StartService源码分析
- Android系统在新进程中启动自定义服务过程(startService)的原理分析
- Android Service 服务 —— startService()
- Android系统在新进程中启动自定义服务过程(startService)的原理分析 (下)
- Android系统在新进程中启动自定义服务过程(startService)的原理分析
- Android系统在新进程中启动自定义服务过程(startService)的原理分析
- Android窗口管理服务WindowManagerService的简要介绍和学习计划
- 初学Android,闹钟服务调用Service(六十九)
- Android创建服务之started service详细介绍