服务初探

服务:在后台长期运行且没有界面的组件可以用服务执行一些后台监听和获取数据的功能

如果不进行手动关闭是不会停止的

清单文件需要配置服务节点和添加可读取通话状态的权限

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.example.callstatuslistener"

android:versionCode="1"

android:versionName="1.0" >

<uses-sdk

android:minSdkVersion="14"

android:targetSdkVersion="19" />

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

<application

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

<activity

android:name="com.example.callstatuslistener.MainActivity"

android:label="@string/app_name" >

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<service android:name=".PhoneStatusServices"></service>

</application>

</manifest>

package com.example.callstatuslistener;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//开启服务

Intent intent=new Intent(this,PhoneStatusServices.class);

startService(intent);

}

}

package com.example.callstatuslistener;

import android.app.Service;

import android.content.Intent;

import android.os.IBinder;

import android.telephony.PhoneStateListener;

import android.telephony.TelephonyManager;

public class PhoneStatusServices extends Service {

@Override

public void onCreate() {

super.onCreate();

System.out.println("服务被创建了");

//监视用户电话状态

TelephonyManager tm=(TelephonyManager) getSystemService(TELEPHONY_SERVICE);

//监听手机通话状态的变化

tm.listen(new MyPhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE);

}

class MyPhoneStateListener extends PhoneStateListener{

@Override

public void onCallStateChanged(int state, String incomingNumber) {

// TODO Auto-generated method stub

switch (state) {

case TelephonyManager.CALL_STATE_IDLE://空闲状态,无通话无响铃

break;

case TelephonyManager.CALL_STATE_RINGING://响铃状态

System.out.println("发现来电号码"+incomingNumber);

//下面可以进行电话拦截

break;

case TelephonyManager.CALL_STATE_OFFHOOK://通话状态

break;

default:

break;

}

super.onCallStateChanged(state, incomingNumber);

}

}

@Override

public void onDestroy() {

// TODO Auto-generated method stub

super.onDestroy();

System.out.println("服务被销毁了");

}

@Override

public IBinder onBind(Intent arg0) {

// TODO Auto-generated method stub

return null;

}

}

来自为知笔记(Wiz)

服务初探,布布扣,bubuko.com

时间: 2024-10-12 03:24:52

服务初探的相关文章

ASP.NET Core 微服务初探[1]:服务发现之Consul

在传统单体架构中,由于应用动态性不强,不会频繁的更新和发布,也不会进行自动伸缩,我们通常将所有的服务地址都直接写在项目的配置文件中,发生变化时,手动改一下配置文件,也不会觉得有什么问题.但是在微服务模式下,服务会更细的拆分解耦,微服务会被频繁的更新和发布,根据负载情况进行动态伸缩,以及受资源调度影响而从一台服务器迁移到另一台服务器等等.总而言之,在微服务架构中,微服务实例的网络位置变化是一种常态,服务发现也就成了微服务中的一个至关重要的环节. 服务发现是什么 其实,服务发现可以说自古有之,我们每

大数据系统工具集

Bootstrapping引导:Kickstart.Cobbler.rpmbuild/xen.kvm.lxc.Openstack. Cloudstack.Opennebula.Eucalyplus.RHEV配置类工具:Capistrano.Chef.puppet.func.salstack.Ansible.rundeck监控类工具:Cacti.Nagios(Icinga).Zabbix.基于时间监控前端Grafana.Mtop 日志系统:Logstash.Scribe绘图工具:RRDtool.G

[第二家公司]收藏夹

<!DOCTYPE NETSCAPE-Bookmark-file-1> <!-- This is an automatically generated file. It will be read and overwritten. Do Not Edit! --> <TITLE>Bookmarks</TITLE> <H1>Bookmarks</H1> <DL><p> <DT><H3 FOLDED

WCF初探-9:WCF服务承载 (下)

在WCF初探-8:WCF服务承载 (上)中,我们对宿主的概念.环境.特点做了文字性的介绍和概括,接下来我们将通过实例对这几种寄宿方式进行介绍.为了更好的说明各寄宿环境特点,本实例采用Http和net.tcp两种服务通讯方式,同时寄宿在不同的宿主中.程序结构如下: 服务契约的接口和实现代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Ser

WCF初探-13:WCF客户端为双工服务创建回调对象

前言: 在WCF初探-5:WCF消息交换模式之双工通讯(Duplex)博文中,我讲解了双工通信服务的一个应用场景,即订阅和发布模式,这一篇,我将通过一个消息发送的例子讲解一下WCF客户端如何为双工服务创建回调对象. 双工服务指定一个回调协定,客户端应用程序必须实现该协定以便提供一个该服务能够根据协定要求调用的回调对象.虽然回调对象不是完整的服务(例如,您无法使用回调对象启动一个通道),但是为了实现和配置,这些回调对象可以被视为一种服务. 双工服务的客户端必须: 实现一个回调协定类. 创建回调协定

国内物联网平台初探(五):机智云IoT物联网云服务平台及智能硬件自助开发平台

国内物联网平台初探(五)——机智云IoT物联网云服务平台及智能硬件自助开发平台 马智 平台定位 机智云平台是致力于物联网.智能硬件云服务的开放平台.平台提供了从定义产品.设备端开发调试.应用开发.产测.运营管理等覆盖智能硬件接入到运营管理全生命周期服务的能力. 机智云平台为开发者提供了自助式智能硬件开发工具与开放的云端服务.通过傻瓜化的工具.不断增强的SDK与API服务能力最大限度降低了物联网硬件开发的技术门槛,降低研发成本,提升开发者的产品投产速度,帮助开发者进行硬件智能化升级,更好的连接.服

C#进阶系列——DDD领域驱动设计初探(六):领域服务

前言:之前一直在搭建项目架构的代码,有点偏离我们的主题(DDD)了,这篇我们继续来聊聊DDD里面另一个比较重要的知识点:领域服务.关于领域服务的使用,书中也介绍得比较晦涩,在此就根据博主自己的理解谈谈这个知识点的使用. DDD领域驱动设计初探系列文章: C#进阶系列——DDD领域驱动设计初探(一):聚合 C#进阶系列——DDD领域驱动设计初探(二):仓储Repository(上) C#进阶系列——DDD领域驱动设计初探(三):仓储Repository(下) C#进阶系列——DDD领域驱动设计初探

WCF初探-14:WCF服务协定

前言: 在前面的文章中,我们定义的服务协定上都会有一个ServiceContract的特性来修饰,这是因为服务契约的实现要靠ServiceContractAttribute 属性定义,然后使用一个或多个类(或接口)方法中的 OperationContractAttribute 属性定义协定的服务操作. 实现服务协定后并将其与WCF 绑定和 EndpointAddress 对象一起使用时,此服务协定将公开以供客户端使用. 公开的信息由 ServiceContractAttribute 表示,其接口

WCF初探-10:WCF客户端调用服务

创建WCF 服务客户端应用程序需要执行下列步骤: 获取服务终结点的服务协定.绑定以及地址信息 使用该信息创建 WCF 客户端 调用操作 关闭该 WCF 客户端对象 WCF客户端调用服务存在以下特点: 服务和客户端使用托管属性.接口和方法对协定进行建模. 若要连接客户端应用程序中的服务,则需要获取该服务协定的类型信息.通常,我们使用Svcutil.exe(ServiceModel Metadata Utility Tool)来完成,也可以直接在客户端项目上引用服务地址完成.它们会从服务中下载元数据