本地 Services(服务)
Services
什么是Services
- android中服务是运行在后台的东西,级别与activity一样。既然说service是运行在后台的服务,那么它就是不可见的,没有界面的东西。可以启动一个服务Service来播放音乐,或者记录地理信息位置的改变,或者启动一个服务来运行并一直监听某种动作。Service和其他组件一样,都是运行在主线程中,因此不能用它来做耗时的请求或者动作。
服务分二种
本地服务
- 本地服务, Local Service 用于应用程序内部。在Service可以调用Context.startService()启动,调用Context.stopService()结束。在内部可以调用Service.stopSelf() 或 Service.stopSelfResult()来自己停止。无论调用了多少次startService(),都只需调用一次stopService()来停止。
2 . 远程服务, Remote Service 用于android系统内部的应用程序之间。可以定义接口并把接口暴露出来,以便其他应用进行操作。客户端建立到服务对象的连接,并通过那个连接来调用服务。调用Context.bindService()方法建立连接,并启动,以调用 Context.unbindService()关闭连接。多个客户端可以绑定至同一个服务。如果服务此时还没有加载,bindService()会先加载它。
使用本地服务实现UI更新(示例)
实现步骤
- 建立一个类,继承 Service 重写onBind、onCreate、onStartCommand、onDestroy方法。
- 在Activiry中,建立 Intent(this,继承Services的类.class)对象,调用服务启动方法startService(intent 刚才建立的对象); 和 stopService(intent); 因为是启动服务,故此需要,在AndroidManifest.xml文件中,写入,允许启动服务。
<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(服务)相关推荐
- 树莓派吃灰记——搭建本地git服务
拿到树莓派第一件事就是搭建本地git服务,主要是是为了mac上提交代码可以方便的同步到树莓派上,毕竟还是离不开mac的开发体验: ).这里的本地git服务不是gitlab这种专业的git服务器,只是方 ...
- ArcGIS API for Silverlight部署本地地图服务
ArcGIS API for Silverlight部署本地地图服务 首先介绍下我们的开发和部署环境: 部署环境: Windows 7 旗舰版32位操作系统 IIS 6.0 开发环境: Visual ...
- android模拟器访问本地web应用,从 iOS 模拟器和 Android 模拟器连接到本地 Web 服务...
从 iOS 模拟器和 Android 模拟器连接到本地 Web 服务Connect to local web services from iOS simulators and Android emul ...
- linux配置oracle11G监听及本地网络服务 及 数据库建库
配置监听及本地网络服务 在oracle用户的图形界面oracle用户中,新开启一个终端,输入命令netca 会弹出如下界面. 数据库建库 在oracle用户的图形界面oracle用户中,新开启一个终端 ...
- 本地生活服务 巨头们玩不转的电商蓝海
今日,由国内领先的电商系统及服务提供商千米网主办的"中国首届本地生活电商大会"将在南京隆重召开.这是一场被誉为中国本地生活电商领域规模最大.含金量最高的行业盛会,吸引无数电商人关注 ...
- 阿里8亿加持B端智能化后,本地生活服务更好做了吗?
图文来源于网络 文|陈小江 来源 | 螳螂财经(ID:TanglangFin) 若说"让天下没有难做的生意"是阿里的愿景,那"让本地没有难做的生意",就是阿里本 ...
- 深度:抖音本地生活服务的真相
前言 抖音做本地生活服务,到底是像做电商一样"有点意思",还是像做社交一样折戟沉沙? 其实这个答案是更倾向于前者的. 01 抖音在业务层面不占优势 任何业务都有核心优势,抖音的业务 ...
- 远程桌面无法连接服务器,启动Terminal Services 服务报1053错误
今天碰到一棘手问题,一上午数据库服务器都无法连接,远程桌面也连不上了,但是可以PING通.项目组的同事一直反映数据库无法连接,耽误工作进度,真急人啊. 跑到机房一看,机器轰轰巨响,进入桌面,点个鼠标半 ...
- JEEWX 使用ngrok将本地Web服务映射到外网
1.为什么要使用ngrok? 作为一个Web开发者,我们有时候会需要临时地将一个本地的Web网站部署到外网,以供它人体验评价或协助调试等等,通常我们会这么做: 1. 找到一台运行于外网的Web服务器 ...
最新文章
- 一个游戏客户端文件的字节加解密代码,我花1000元请人解的,存在这,以后应该用得到。...
- dir在python中什么意思_python中dir是什么
- 【深度学习】总有些哪些大胆又新奇的卷积网络结构设计
- 浏览器中的JavaScript
- 中低频量化交易策略研发04_ 简单的择时策
- startService与bindService
- Python 中的闭包
- Can总线dbc文件解析代码
- 知识点1--认识SSM框架并准备项目
- QCustomPlot系列(2)-绘制两条曲线+自动全显+鼠标拖放+rescaleAxes()函数简介
- virtual dimention简单改进版
- JVM 上篇(4):虚拟机栈
- 卸载asterisk
- Unable to negotiate with xx.xx port xx: no matching host key type found. Their offer: ssh-rsa....
- ☆ZigBee的碎片化
- TOPSIS法中正负理想解、正负理想距离如何计算?
- 个人如何创业挣钱?我看淘宝开放平台
- DJ音乐培训展示类网站织梦模板
- 如何实现外网跨网远程控制内网计算机?快解析来解决
- 光纤光缆纵览——国内外