android之服务

android中的进程优先级


  • 前台进程:拥有一个正在与用户交互的Activity(onResume方法被调用)
  • 可见进程:拥有一个可见但没有焦点的Activity(onPause方法被调用)
  • 服务进程:启动了一个service并调用了startService方法
  • 后台进程:拥有一个不可见的Activity(onStop方法被调用)的进程
  • 空进程:没有拥有任何活动的应用组件的进程

前台进程优先级最高,空进程优先级最低。

Service



因为服务进程的优先级相对比较高,所以我们需要将一些需要长期运行的程序(音乐播放、文件下载)写在服务中,这样即使我们Activity关闭了,我们的应用也能正常运行。

生命周期


  • 服务对象被创建时会调用onCreate(),采用单例模式
  • 服务开始运行时会调用onStartCommand方法,多次开启同一个服务该方法会被调用多次,而onCreate方法只被调用一次。
  • 服务对象被销毁的时候onDestroy方法会被调用

显示启动



Service和Activity一样,有显示启动和隐式启动之分。显示启动就是加载类文件。

布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <Button
        android:id="@+id/start"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:text="开启服务"
        android:onClick="click"/>
    <Button
        android:id="@+id/stop"
        android:textSize="18sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="关闭服务"
        android:onClick="click1"/>
</LinearLayout>

Activity

package xidian.dy.com.chujia;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    Intent service;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

    }

    public void click(View v){
        Toast.makeText(this,"开启服务",Toast.LENGTH_SHORT).show();
        service = new Intent(this, MyService.class);
        startService(service);
    }

    public void click1(View v){
        if(service != null)
            stopService(service);
    }
}

service(该服务中并没有运行具体的程序)

package xidian.dy.com.chujia;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.support.annotation.Nullable;

/**
 * Created by dy on 2016/7/12.
 */
public class MyService extends Service {
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}

 清单文件(在清单文件中注册service组件)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="xidian.dy.com.chujia">
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".MainActivity"
        android:label="主界面">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <service android:name=".MyService" />
</application>
</manifest>
时间: 2024-10-09 11:10:31

android之服务的相关文章

Android 定位服务(Location-Based Services)

Android定位服务融合了GPS定位.移动通信.导航等多种技术,提供与空间位置相关的综合应用服务.近些年来,基于位置的服务发展更为迅速,涉及商务.医疗.工作和生活的各个方面,为用户提供定位.追踪和敏感区域警告等一系列服务. Android平台支持提供位置服务的API,在开发过程中主要使用LocationManager和LocationProviders对象. - LocationManager: 用来获取当前位置,追踪设备的移动路线,或设定敏感区域,在进入或离开敏感区域时设备会发出特定警报.

3D语音天气球——在Unity中使用Android语音服务

转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 这个项目准备分四部分介绍: 一:创建可旋转的"3D球":3D语音天气球(源码分享)--创建可旋转的3D球 二:通过天气服务,从网络获取时实天气信息并动态生成"3D球":3D语音天气球(源码分享)--通过天气服务动态创建3D球 三:Android语音服务和Unity的消息传递 四:Unity3D端和Android端的结合 前两篇文章已经介绍了如何创

Android 定位服务(转载)

今天因为工作需要,把以前编写的一个GPS测试程序拿出来重新修改了一下.这个程序说起来有些历史了,是我11年编写的,那时候学了Android开发没多久,算是一个实验性的作品.现在工作需要,重新拿出来修整.同时发现我对android的GPS服务了解并不深,所以今天特意阅读了有关GPS服务的一些资料,把相关知识点记录下来. 本人做了GPS相关的嵌入式软件已经几年了,所以说起要做个测试GPS定位模块的程序,第一反应就是串口读取GPS模块的数据,然后解析GPS的NMEA格式数据.NMEA是一种标准化数据格

Android Service服务——初识

很抱歉(对我,也是对大家)过了两个星期说好的要发的博客迟迟没有动静,因为最近在与高等数学死磕,同时参加了一个党内的培训,所以现在的学习生活有些紧张,自己的的草稿都堆积了好几篇了,现在我就对于我应朋友之情需要完成一个android的播放器,对于其中的一些简单的要点,写一些自己的感悟. 首先我要提到的时Android  Service服务,其实我接触到Service这个概念的时间并不长,首先在做这个不能算作工程的东西时,我就想到了,android需要有这样的一个机制,通过一个程序去控制歌曲的播放,同

Android service 服务

Android的服务: 1:已启动方式: startService()和bindService(): startService:启动后,如果Activity关闭了,服务依然运行,除非stopService: bindService:创建开启服务器,但是在程序关闭的时候,会自动关闭服务: 通过ServiceConnectionjava接口获取service的IBinder接口: 2:控制服务(绑定服务): (1)但是上述两个方式都是通过Intent创建启动服务的,没有通过new,所以没有直接控制s

Android 地理服务

1.User Location 能做什么 获取用户位置 追踪用户的移动 2.User Location 的关键API Location Manager:用于管理Android的用户定位服务: Location Providers: 提供多种定位方式供开发者选择: 3.获取用户的当前位置 Gps定位: 声明权限:android.permission.ACCESS_FINE_LOCATION network定位: 声明权限:android.permission.ACCESS_FINE_LOCATIO

Android从服务端获取json解析显示在客户端上面

Android从服务端获取json解析显示在客户端上面 百度经验:jingyan.baidu.com 首先说一下Json数据的最基本的特点,Json数据是一系列的键值对的集合,和XML数据来比,Json数据的体积更加小,传输效率高,易解析,不过可读性不高; 因为这次要从服务器端得到Json数据,并且通过解析之后把解析后的数据显示在Android客户端中,首先部署服务器端代码(直接使用Jsp/Servlet): 构造的Json数据如下: [{"name":"张三",&

Android Service服务-(转)

Service是Android系统中提供的四大组件之一.它是运行在后台的一种服务,一般声明周期较长,不直接与用户进行交互. 服务不能自己运行,需要通过调用Context.startService()或Context.bindService()方法启动服务.这两个方法都可以启动Service,但是它们的使用场合有所不同.    1. 使用startService()方法启用服务,调用者与服务之间没有关连,即使调用者退出了,服务仍然运行.    如果打算采用Context.startService(

实现Android语音识别服务接口 RecognitionService的方法

之前的一篇文章介绍过SpeechRecognizer类,该类可以作为对外的一个接口,并通过Intent传递一个ComponentName获取可支持语音识别的功能的服务,一般的用户手机中如果安装了语音识别的一些软件,就会拥有这样的能力,但是如果开发者希望自己通过某公司的sdk集成自己的语音识别服务,那么就需要实现RecognitionService这个类. 这个类是个抽象类,需要开发者完成其中的几个抽象方法.下面的代码注释中对每个方法进行了说明. <pre name="code"

Android Service 服务(三)—— bindService与remoteService

(转自:http://blog.csdn.net/ithomer/article/details/7366396)   一.bindService简介 bindService是绑定Service服务,执行service服务中的逻辑流程. service通过Context.startService()方法开始,通过Context.stopService()方法停止:也可以通过Service.stopSelf()方法或者Service.stopSelfResult()方法来停止自己.只要调用一次st