`

Service生命周期

阅读更多

                                                             初识Service

         刚刚看到这个词你可能会问,这是什么东西?服务?那么Activity大家已经够为熟悉了吧,那么我打个比喻,Service就是不显示界面的Activity,也就是后台运行,可以在没有UI情况下进行运行。

  • service组件  service是没有显示UI的操作组件,例如,有时候你退出了音乐播放器,开始进入其他Activity界面例如去玩qq,音乐还是在后台响起,给Activity做必要的支持。开发时候用户只需要继承android.app.Service;就可以使用了
  • Service生命周期

service的生命周期,从它被创建开始,到它被销毁为止,可以有两条不同的路径:

A started service

  被开启的service通过其他组件调用 startService()被创建。

  这种service可以无限地运行下去,必须调用stopSelf()方法或者其他组件调用stopService()方法来停止它。

  当service被停止时,系统会销毁它。

 

A bound service

  被绑定的service是当其他组件(一个客户)调用bindService()来创建的。

  客户可以通过一个IBinder接口和service进行通信。

  客户可以通过 unbindService()方法来关闭这种连接。

  一个service可以同时和多个客户绑定,当多个客户都解除绑定之后,系统会销毁service。

 

我们先做一个实例实现:

Android Service的生命周期并不像Activity那么复杂,它只继承了onCreate(),onStart(),onDestroy()三个方法,当我们第一次启动Service时,先后调用了onCreate(),onStart()这两个方法,当停止Service时,则执行onDestroy()方法,这里需要注意的是,如果Service已经启动了,当我们再次启动Service时,不会在执行onCreate()方法,而是直接执行onStart()方法,具体的可以看下面的实例。

这里说明onStart()已经被onStartCommande所代替

首先定义sevice:

public class MyService extends Service{
	
	public void onCreate() {
		System.out.println("****onCreate");
		
	}

	@Override
	public IBinder onBind(Intent arg0) {
		// TODO Auto-generated method stub
		return null;
	}
	public void onDestroy(){
		System.out.println("****onDestroy");
	}
	public int onStartCommand(Intent intent,int flag,int startid){
		System.out.println("****onStart  Intent"+intent+"  flag "+flag+"  startid:"+startid);
		return Service.START_CONTINUATION_MASK;
	}

}

 然后定义布局文件,应该启动关闭service

 

 

 

 <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="start"
        android:text="启动Service" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="stop"
        android:text="停止Service" />

 

主Activity

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}
	public void start(View v){
		MainActivity.this.startService(new Intent(MainActivity.this,MyService.class));
		
	}
    public void stop(View v){
    	MainActivity.this.stopService(new Intent(MainActivity.this,MyService.class));
		
	}

	
}

 

最后记得一点,一个service文件完成后记得在Androidmainfest进行注册,

在application节点下写上

<service 
            android:name="MyService" />

 如图:


点击启动按钮,控制台输出




  我们仔细看后面输出:



 然后我们调用手机设置里面的应用程序,查看运行的:

上图显示正在运行中的service

接下来我们点击关闭按钮:



 


 

 

  • 大小: 125.5 KB
  • 大小: 5.5 KB
  • 大小: 4.7 KB
  • 大小: 2.3 KB
  • 大小: 2.5 KB
0
0
分享到:
评论

相关推荐

    spring中service生命周期(xml/annotation)

    在Spring框架中,Service层是业务逻辑的核心...以上就是关于Spring中Service生命周期的管理和配置,包括XML和注解方式的详细介绍。通过理解和熟练掌握这些知识,开发者能够更好地设计和维护Spring应用中的业务逻辑层。

    Activity和Service生命周期及使用AIDL通信实例备份

    本篇将深入探讨Activity和Service的生命周期以及如何利用Android Interface Definition Language (AIDL)进行进程间通信。 Activity是Android应用程序的用户界面,它负责与用户交互。Activity的生命周期分为几个关键...

    Android Service生命周期及用法!

    `onDestroy()`则在Service被停止时调用,标志着Service生命周期的结束。值得注意的是,Service的生命周期管理需要谨慎处理,以避免内存泄漏和不必要的资源消耗。 Service与Activity之间的通信是通过Binder机制实现...

    Android说明Service生命周期的代码例子

    Service生命周期的理解和正确管理对于优化应用程序性能至关重要。以下是一个关于Service生命周期的详细解析,结合代码示例来阐述如何在Android中操作Service。 1. **Service生命周期概述** Service的生命周期主要...

    android项目教程Service生命周期.pptx

    - 未绑定Activity的Service生命周期图显示了startService()启动的过程,而绑定Activity的Service生命周期图则展示了bindService()启动的过程,两者在生命周期上有显著差异。 理解并熟练掌握Service的生命周期及其...

    AndroidService生命周期及用法[收集].pdf

    使用`startService()`方法启动Service,这会导致Service生命周期中的`onStartCommand()`被调用。若要停止Service,可以调用`stopService()`。需要注意的是,即使调用了`stopService()`,Service可能并不会立即停止,...

    Android中Service生命周期演示案例的任务要求.pdf

    6. **Service生命周期**: Service的生命周期包括`onCreate()`, `onStartCommand()`, `onBind()`, `onUnbind()`, `onDestroy()`等关键方法。在创建Service时,会调用`onCreate()`,接着如果是通过`startService()`...

    android Service的生命周期

    总的来说,Android Service的生命周期管理是开发者必须掌握的关键技能,正确理解和使用Service生命周期能够确保应用的稳定性和效率,避免不必要的资源消耗。在开发过程中,我们还需要注意Service的权限管理,以及在...

    Android Service生命周期详解

    总的来说,Android Service生命周期管理涉及到一系列的回调方法,通过这些方法,开发者能够精确控制服务的启动、运行和终止,同时确保服务在正确的时间释放资源。合理地使用服务能提高应用的效率和用户体验。在实际...

    基于Android Service 生命周期的详细介绍

    Service概念及用途: Android中的服务,它与Activity不同,它是不能与用户交互的,不能自己启动的,运行在后台的程序,如果我们退出应用时,Service进程并没有结束,它仍然在后台运行,那...Service生命周期 : Android

    Android中演示Service生命周期的代码清单.pdf

    本篇文章将详细阐述如何在Android中演示Service的生命周期,并提供相关的代码清单。 首先,Service的生命周期主要由四个主要方法组成:`onCreate()`, `onStartCommand()`, `onBind()`, 和 `onDestroy()`。当Service...

    Android中service基本用法,生命周期1

    startService启动方式,只在activity中启动和销毁,和activity关系不大,即使antivity退出,服务任然运行,比如后台放音乐,对应生命周期: bindService启动方式,和activity绑定后,和activity共存亡,activity...

    Android中Service的生命周期解析.pdf

    这是Service生命周期中的最后一个回调,开发者应在此处释放所有资源。 3. 启动服务(Started Service) 当通过startService()启动Service时,Service会在后台无限运行,直到调用stopService()或stopSelf()才会停止...

    ServiceLifecycle:Android Service生命周期

    理解并掌握Service生命周期对于开发高效、稳定的Android应用至关重要。 1. **Service的启动和绑定** - **启动(Start)**: 当通过startService()方法启动Service时,Service会经历onCreate() -&gt; onStartCommand() ...

    service的生命周期以及启动方式

    本教程将深入探讨Service的生命周期及其启动方式,并结合一个求平均值的Demo进行讲解。 首先,我们来理解Service的生命周期。Service有四个主要状态:创建(Created)、启动(Started)、绑定(Bound)和销毁...

    Android组件的生命周期

    - **Service生命周期**: - `onCreate()`:Service首次创建时调用。 - `onStartCommand()`或`onBind()`:根据Service类型(启动型或绑定型),在Service启动时调用。 - `onDestroy()`:Service销毁前调用。 - **...

    AndroidLifeCycle,处理android生命周期的简单方法.zip

    2. Service生命周期:Service是后台运行的服务,没有用户界面。onCreate()用于初始化服务,onStartCommand()接收并处理启动请求,onBind()用于客户端绑定服务。当服务不再需要时,系统会调用onStop()和onDestroy()。...

Global site tag (gtag.js) - Google Analytics