Services

什么是Services

  • android中服务是运行在后台的东西,级别与activity一样。既然说service是运行在后台的服务,那么它就是不可见的,没有界面的东西。可以启动一个服务Service来播放音乐,或者记录地理信息位置的改变,或者启动一个服务来运行并一直监听某种动作。Service和其他组件一样,都是运行在主线程中,因此不能用它来做耗时的请求或者动作。

服务分二种

本地服务

  1. 本地服务, Local Service 用于应用程序内部。在Service可以调用Context.startService()启动,调用Context.stopService()结束。在内部可以调用Service.stopSelf() 或 Service.stopSelfResult()来自己停止。无论调用了多少次startService(),都只需调用一次stopService()来停止。

2 . 远程服务, Remote Service 用于android系统内部的应用程序之间。可以定义接口并把接口暴露出来,以便其他应用进行操作。客户端建立到服务对象的连接,并通过那个连接来调用服务。调用Context.bindService()方法建立连接,并启动,以调用 Context.unbindService()关闭连接。多个客户端可以绑定至同一个服务。如果服务此时还没有加载,bindService()会先加载它。

使用本地服务实现UI更新(示例)

实现步骤

  1. 建立一个类,继承 Service 重写onBind、onCreate、onStartCommand、onDestroy方法。
  2. 在Activiry中,建立 Intent(this,继承Services的类.class)对象,调用服务启动方法startService(intent 刚才建立的对象); 和 stopService(intent); 因为是启动服务,故此需要,在AndroidManifest.xml文件中,写入,允许启动服务。
  3. <service android:name=".MyServices"
    android:enabled="true"
    android:exported="true"
    ></service>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.zking.administrator.g160618_android23_services"><application android:allowBackup="true" android:icon="@mipmap/ic_launcher"android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true" android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>//设定服务,允许启动<service android:name=".MyServices"android:enabled="true"android:exported="true"></service></application></manifest>


Activity

public class MainActivity extends AppCompatActivity {private Intent intent;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//需要启动的服务intent = new Intent(this,MyServices.class);}public void start(View view){//启动服务startService(intent);}public void stop(View view){//停止服务stopService(intent);}------------------------------------------------------------//内部(服务)类,编写服务内容class sendServe extends Thread{int startid;//通过 构造函数,传递过来启动的服务id,用来判断,等所有服务只想完后,再自动结束服务public sendServe (int startId) {this.startid=startId;}public void setIntent(Intent intent) {this.intent = intent;}private Intent intent;@Overridepublic void run() {//建立意图发送广播intent = new Intent();//建立广播,频率,推荐使用包名加类名intent.setAction("ces");//发送内容String  fs="ddddddddsfsd方法潍坊市发生生栋覆屋";for (int i = 0; i <fs.length() ; i++) {//设定每次广播发送的内容intent.putExtra("fs",fs.substring(0,i));try {//发一次,暂停1秒sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}//发送广播sendBroadcast(intent);}//当所有的服务(线程),执行完毕后,停止服务。stopSelf(startid);}}}


第二个Activity

public class MainActivityTwo extends AppCompatActivity {private ReceiveTwo receiveTwo;private IntentFilter intd;private ProgressBar progressBar;private TextView textView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main_two);//显示广播接受到的值textView = (TextView) findViewById(R.id.tv_main_one);//这里采用,动态广播接受者//接受者  对象receiveTwo=new ReceiveTwo();//建立广播过滤器intd=new IntentFilter();//设定,接受哪个广播intd.addAction("ces");}@Override  //Activity重新开始protected void onResume() {super.onResume();registerReceiver(receiveTwo,intd);}@Override //Activity结束protected void onDestroy() {super.onDestroy();unregisterReceiver(receiveTwo);}------------------------------------------------------------//内部类, 广播接受者class ReceiveTwo extends BroadcastReceiver {String pj="";int anInt = 0;@Override // 广播接受方法public void onReceive(Context context, Intent intent) {    //当时,我指定接受的广播时if("ces".equals(intent.getAction())){    pj=textView.getText().toString();pj+=intent.getStringExtra("fs");textView.setText("");textView.setText(pj);}}}}

本地 Services(服务)相关推荐

  1. 树莓派吃灰记——搭建本地git服务

    拿到树莓派第一件事就是搭建本地git服务,主要是是为了mac上提交代码可以方便的同步到树莓派上,毕竟还是离不开mac的开发体验: ).这里的本地git服务不是gitlab这种专业的git服务器,只是方 ...

  2. ArcGIS API for Silverlight部署本地地图服务

    ArcGIS API for Silverlight部署本地地图服务 首先介绍下我们的开发和部署环境: 部署环境: Windows 7 旗舰版32位操作系统 IIS 6.0 开发环境: Visual ...

  3. android模拟器访问本地web应用,从 iOS 模拟器和 Android 模拟器连接到本地 Web 服务...

    从 iOS 模拟器和 Android 模拟器连接到本地 Web 服务Connect to local web services from iOS simulators and Android emul ...

  4. linux配置oracle11G监听及本地网络服务 及 数据库建库

    配置监听及本地网络服务 在oracle用户的图形界面oracle用户中,新开启一个终端,输入命令netca 会弹出如下界面. 数据库建库 在oracle用户的图形界面oracle用户中,新开启一个终端 ...

  5. 本地生活服务 巨头们玩不转的电商蓝海

    今日,由国内领先的电商系统及服务提供商千米网主办的"中国首届本地生活电商大会"将在南京隆重召开.这是一场被誉为中国本地生活电商领域规模最大.含金量最高的行业盛会,吸引无数电商人关注 ...

  6. 阿里8亿加持B端智能化后,本地生活服务更好做了吗?

    图文来源于网络 文|陈小江 来源 | 螳螂财经(ID:TanglangFin) 若说"让天下没有难做的生意"是阿里的愿景,那"让本地没有难做的生意",就是阿里本 ...

  7. 深度:抖音本地生活服务的真相

    前言 抖音做本地生活服务,到底是像做电商一样"有点意思",还是像做社交一样折戟沉沙? 其实这个答案是更倾向于前者的. 01 抖音在业务层面不占优势 任何业务都有核心优势,抖音的业务 ...

  8. 远程桌面无法连接服务器,启动Terminal Services 服务报1053错误

    今天碰到一棘手问题,一上午数据库服务器都无法连接,远程桌面也连不上了,但是可以PING通.项目组的同事一直反映数据库无法连接,耽误工作进度,真急人啊. 跑到机房一看,机器轰轰巨响,进入桌面,点个鼠标半 ...

  9. JEEWX 使用ngrok将本地Web服务映射到外网

    1.为什么要使用ngrok? 作为一个Web开发者,我们有时候会需要临时地将一个本地的Web网站部署到外网,以供它人体验评价或协助调试等等,通常我们会这么做: 1. 找到一台运行于外网的Web服务器 ...

最新文章

  1. 一个游戏客户端文件的字节加解密代码,我花1000元请人解的,存在这,以后应该用得到。...
  2. dir在python中什么意思_python中dir是什么
  3. 【深度学习】总有些哪些大胆又新奇的卷积网络结构设计
  4. 浏览器中的JavaScript
  5. 中低频量化交易策略研发04_ 简单的择时策
  6. startService与bindService
  7. Python 中的闭包
  8. Can总线dbc文件解析代码
  9. 知识点1--认识SSM框架并准备项目
  10. QCustomPlot系列(2)-绘制两条曲线+自动全显+鼠标拖放+rescaleAxes()函数简介
  11. virtual dimention简单改进版
  12. JVM 上篇(4):虚拟机栈
  13. 卸载asterisk
  14. Unable to negotiate with xx.xx port xx: no matching host key type found. Their offer: ssh-rsa....
  15. ☆ZigBee的碎片化
  16. TOPSIS法中正负理想解、正负理想距离如何计算?
  17. 个人如何创业挣钱?我看淘宝开放平台
  18. DJ音乐培训展示类网站织梦模板
  19. 如何实现外网跨网远程控制内网计算机?快解析来解决
  20. 光纤光缆纵览——国内外

热门文章

  1. eclipse快捷键失效
  2. 套利交易 套利模型 套利策略 期货套利模型 设计 跨期套利
  3. Linux下复制指定的目录及其子目录下的文件,到其他文件夹下(4种方法)
  4. 做生鲜水果这行线上销售有什么好的平台推荐?
  5. 《大数据之路-阿里巴巴大数据实践》第一章 总述
  6. 北邮矩阵论- 第1章 1.1线性空间
  7. oracle运维积累
  8. 第十四届蓝桥杯三月真题刷题训练——第 15 天
  9. 基于扩展卡尔曼滤波的目标跟踪仿真
  10. 三坐标检测基础知识之矢量的定义