android中service的实现方法,安卓service用法

android中service的实现方法,安卓service用法,Android服务Service教程

Android服务是开发Android应用程序的重要组成部分。与主动活动不同,服务在后台运行,服务没有接口,其生命周期与主动活动有很大不同。通过使用该服务,我们可以实现一些后台操作,比如从远程服务器加载网页。下面我们来看看具体情况,有需要的朋友可以参考一下。

目录

1、服务目的2、继承服务3、启动和停止服务4、自动启动服务前言:

Android服务是开发Android应用程序的重要组成部分。与主动活动不同,服务在后台运行,服务没有接口,其生命周期与主动活动有很大不同。通过使用服务,我们可以实现一些后台操作,比如从远程服务器加载网页。服务可以帮助我们在Android中进行多任务处理。

我们已经知道,Android活动可以启动和停止,并且可以在系统资源过低时被销毁。服务旨在用更长的执行时间来完成任务。Android服务可以从活动中启动,也可以从广播接收器和其他服务中启动。

必须注意的是,使用服务并不需要自动创建一个新的线程,所以如果我们在服务中实现一个简单的逻辑,并不会花费很长的处理时间,我们实际上并不需要在单独的线程中运行它。但是,如果我们想要实现复杂的逻辑并长时间处理它,我们必须创建一个新的线程来执行它,否则在主线程上运行服务可能会导致ANR问题。

1、服务用途

服务适合两种用途:

实现多任务

激活进程间通信(IPC)进程间通信

第一种情况的典型例子是需要从远程服务器下载数据。在这种情况下,我们可以让应用程序同时与用户交互,并开始在后台完成工作,而用户可以继续使用应用程序,并在服务完成时向用户发送消息。

在第二种情况下,我们可以通过服务“共享”一些常用的功能,这样不同的应用程序就可以重用这些功能。例如,假设我们有一个发送电子邮件的服务,我们想在几个应用程序之间共享这个服务,这样我们就不必重写相同的代码。在这种情况下,我们可以使用IPC来公开服务,该服务将接口公开给“远程”并由其他应用程序调用。

下面是一个简单的服务,它继承了服务。

2、继承Service

公共类TestService扩展服务{

@覆盖

public I binder on bind(Intent arg 0){

返回null

}

}

服务是有生命周期的,可以实现其中一些回调方法:

公共类TestService扩展服务{

@覆盖

public void onCreate() {

super . oncreate();

}

@覆盖

public void onDestroy() {

super . on destroy();

}

@覆盖

public int onstart command(Intent Intent,int flags,int startId) {

返回super.onStartCommand(intent,flags,startId);

}

@覆盖

public I binder on bind(Intent arg 0){

返回null

}

}

只有在创建服务时,onCreate方法才会被调用一次。如果服务已经在运行,则不会调用此方法。我们也不直接调用,操作系统OS调用这个方法。

OnStartCommand是最重要的方法,因为当它被调用时,我们需要启动服务。在这个方法中,我们需要将意图传递给我们运行的服务,这样我们就可以与服务交换一些信息。在该方法中实现的逻辑可以在该方法中直接执行。如果执行需要很长时间,我们需要创建一个线程。如您所见,这个方法要求我们返回一个整数作为结果。这个整数表示操作系统如何处理服务。

START_STICKY :使用此返回值。如果OS杀死了我们的服务,它会重新创建它,但发送给服务的意图不会再被传递。这样,服务就一直在运行。

START_NOT_STICKY:如果操作系统终止了该服务,在客户端显式激活onStart命令之前,不会再次创建该服务。

START_REDELIVER_INTENT: 类似于START_STICKY,意图会再次传递给服务。

当服务被销毁时,操作系统调用OnDestroy。

服务需要在Manifest.xml 中配置:

服务android:name='。TestService ' Android:enabled=' true '/

3、启动和停止服务

我们知道,服务必须首先启动,并在完成其任务后最终停止。我们可以从Activity activity开始,我们可以使用intention向服务传递一些信息。假设我们有两个按钮,一个开始按钮和一个停止按钮。

btnStart.setOnClickListener(新视图。OnClickListener() {

@覆盖

公共void onClick(视图v) {

Intent I=new Intent(main activity . this,test service . class);

i.putExtra('name ',' survivingwith Android ');

main activity . this . start service(I);

}

});

btnStop.setOnClickListener(新视图。OnClickListener() {

@覆盖

公共void onClick(视图v) {

Intent I=new Intent(main activity . this,test service . class);

main activity . this . stop service(I);

}

});

运行效果如下:

IntentService

正如我们前面提到的,服务运行在主线程中,所以在这个服务中执行一些逻辑时,我们应该非常小心。必须考虑到,如果这个逻辑是一个阻塞操作或需要很长时间才能完成,它将导致ANR问题。在这种情况下,逻辑被转移到一个单独的线程,这意味着我们必须在onStartCommand方法中创建线程并运行它。还有一种衍生服务叫做IntentService,可以简化这些操作。当我们不需要同时处理多个请求时,这个类很有用。这个类创建一个工作线程来处理不同的请求,

功能如下:

创建一个单独的线程来处理请求

创建一个请求队列,然后传递一个意向消息。

创建onStartCommand的默认实现

处理完所有请求后停止服务。

公共类TestIntentService扩展IntentService {

公共测试服务(){

super(' TestIntentService ');

}

@覆盖

受保护的void on handle Intent(Intent Intent){

}

}

在HandleIntent中,我们实现逻辑,不需要关心这项工作需要半天或更长时间,因为这个方法在一个单独的线程中运行。

4、自动启动服务

如果我们希望在智能手机打开时启动它,我们将首先创建一个广播接收器,侦听该事件,然后启动服务。

公共类BootBroadcast扩展BroadcastReceiver {

@覆盖

接收时公共无效(上下文ctx,意图intent) {

ctx.startService(new Intent(ctx,test service . class));

}

}

Manifest.xml中配置:

接收者android:name='。'引导广播'

意图过滤器

action Android:name=' Android . intent . action . boot _ COMPLETED '/

/意图-过滤器

/接收器

关于Android服务教程的这篇文章到此为止。有关Android服务的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • windowsandroid手机版下载,windowsandroid安装apk
  • windowsandroid手机版下载,windowsandroid安装apk,WindowsAndroid 安装教程详解
  • android调用webview方法,androidwebview是什么,Android 中 WebView 的基本用法详解
  • android传感器高级编程,Android传感器,Android编程之光线传感器用法详解
  • android.app.Dialog,android自定义dialog对话框,Android开发笔记之-Dialog的使用详解
  • android 图片视频轮播框架,androidlayout轮播图,Android实现炫酷轮播图效果
  • android里的viewpager,安卓自定义view流程,Android自定义引导玩转ViewPager的方法详解
  • android里的viewpager,android viewpager详解
  • android里的viewpager,android viewpager详解,Android自定义超级炫酷的ViewPage指示器
  • android调用webview方法,androidwebview是什么
  • android设置控件宽度,android获取屏幕宽度和高度
  • android设置控件宽度,android获取屏幕宽度和高度,Android中获取控件宽高的4种方法集合
  • android蓝牙开发的基本流程,安卓蓝牙app开发教程
  • android蓝牙开发的基本流程,安卓蓝牙app开发教程,android蓝牙简单开发示例教程
  • android菜单栏,android菜单控件
  • 留言与评论(共有 条评论)
       
    验证码: