2019独角兽企业重金招聘Python工程师标准>>>

1.新建class 继承android.app.Service;重写其oncreat、onbind、ondestroy、onunbind方法

package com.example.services;


import java.util.Timer;
import java.util.TimerTask;

import android.R.integer;
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.widget.Toast;

public  class EchoServices extends Service {

@Override
     public IBinder onBind(Intent arg0) {
        Toast.makeText( this,  " 启动服务onBind ",  1).show();
        startTimer();
         return bindServices;
    }

@Override
     public boolean onUnbind(Intent intent) {
        Toast.makeText( this,  " 关闭服务onUnbind ",  1).show();
        stopTimer();
         return super.onUnbind(intent);
    }

@Override
     public  void onCreate() {
        super.onCreate();
        Toast.makeText( this,  " 启动服务onCreat ",  1).show();
    }

@Override
     public  void onDestroy() {
        super.onDestroy();
        Toast.makeText( this,  " 关闭服务onDestroy ",  1).show();
    }

public bindServices bindServices =  new bindServices();

public  class bindServices extends Binder {
        
         public EchoServices getEchoServices(){
             return EchoServices. this;
        }
    }
    
     private Timer timer= null;
     private TimerTask task= null;
    
    
     private  int i= 0;
     private  void startTimer(){
         if(timer== null){
            timer= new Timer();
            task= new TimerTask() {
                @Override
                 public  void run() {
                    i++;
                }
            };
            timer.schedule(task,  1000,  1000);
        }
    }
     private  void stopTimer(){
         if(timer!= null){
            task.cancel();
            timer.cancel();
            timer= null;
            task= null;
        }
    }
    
     public  int getCurrentNumber(){
         return i;
    }

}

2.清单文件中加入服务组件 <  service  android:name  = "EchoServices" ></  service  >
3.声明意图对象表示服务,开启服务关闭服务

1 package com.example.services;

 2 
 3  import android.os.Bundle;
 4  import android.os.IBinder;
 5  import android.app.Activity;
 6  import android.content.ComponentName;
 7  import android.content.Context;
 8  import android.content.Intent;
 9  import android.content.ServiceConnection;
10  import android.view.Menu;
11  import android.view.View;
12  import android.view.View.OnClickListener;
13  import android.widget.Button;
14  import android.widget.Toast;
15  import android.widget.SearchView.OnCloseListener;
16 
17  public  class MainActivity  extends Activity  implements OnClickListener, ServiceConnection {
18 
19      private Button btn_start, btn_stop, btn_bind, btn_unbind,btn_getNum;
20      private Intent servicesIntent;
21      private EchoServices echoServices;
22 
23     @Override
24      protected  void onCreate(Bundle savedInstanceState) {
25          super.onCreate(savedInstanceState);
26         setContentView(R.layout.activity_main);
27         btn_start = (Button) findViewById(R.id.btn_start);
28         btn_stop = (Button) findViewById(R.id.btn_stop);
29         btn_bind = (Button) findViewById(R.id.btn_bind);
30         btn_unbind = (Button) findViewById(R.id.btn_unbind);
31         btn_getNum = (Button) findViewById(R.id.btn_getNum);
32         btn_start.setOnClickListener( this);
33         btn_stop.setOnClickListener( this);
34         btn_bind.setOnClickListener( this);
35         btn_unbind.setOnClickListener( this);
36         btn_getNum.setOnClickListener( this);
37         servicesIntent =  new Intent( this, EchoServices. class);
38     }
39 
40     @Override
41      public  void onClick(View v) {
42          int id = v.getId();
43          switch (id) {
44          case R.id.btn_start:
45             startService(servicesIntent);
46              break;
47          case R.id.btn_stop:
48             stopService(servicesIntent);
49              break;
50          case R.id.btn_bind:
51             bindService(servicesIntent,  this, Context.BIND_AUTO_CREATE);
52              break;
53          case R.id.btn_unbind:
54             unbindService( this);
55              break;
56          case R.id.btn_getNum:
57              if(echoServices!= null){
58                 System.out.println(echoServices.getCurrentNumber());
59             }
60             
61              break;
62         }
63     
64     }
65 
66      /**
67       * 当服务绑定成功时触发
68        */
69     @Override
70      public  void onServiceConnected(ComponentName arg0, IBinder binder) {
71         Toast.makeText(getApplicationContext(), "绑定成功", 1).show();
72         echoServices=((EchoServices.bindServices)binder).getEchoServices();
73     }
74 
75      /**
76       * 当绑定失败时触发
77        */
78     @Override
79      public  void onServiceDisconnected(ComponentName arg0) {
80         Toast.makeText(getApplicationContext(), "绑定失败", 1).show();
81     }
82 
83 }

4.oncreat、onbind、ondestroy、onunbind方法的区别

采用Context.bindService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onBind()方法,这个时候访问者和服务绑定在一起。 如果访问者要与服务进行通信,那么,onBind()方法必须返回Ibinder对象。如果访问者退出了,系统就会先调用服务的onUnbind()方法,接着调用onDestroy()方法。如果调用bindService()方法前服务已经被绑定,多次调用bindService()方法并不会导致多次创建服务及绑定(也就是说onCreate()和onBind()方法并不会被多次调用)。如果访问者希望与正在绑定的服务解除绑定,可以调用unbindService()方法,调用该方法也会导致系统调用服务的onUnbind()-->onDestroy()方法。

Activity与服务进行通信,开发人员通常把通信方法定义在接口里,然后让Ibinder对象实现该接口,而Activity通过该接口引用服务onBind()方法返回的Ibinder对象,然后调用Ibinder对象里自定义的通信方法。

转载于:https://my.oschina.net/zhangjie9142/blog/495194

android 服务相关推荐

  1. android从服务端获取json解析显示在客户端上面,Android服务端获取json解析显示在客户端上面.doc...

    Android服务端获取json解析显示在客户端上面 Android从服务端获取json解析显示在客户端上面 首先说一下Json数据的最基本的特点,Json数据是一系列的键值对的集合,和XML数据来比 ...

  2. erlang-百度云推送Android服务端功能实现-erlang

    百度云推送官方地址http://developer.baidu.com/wiki/index.php?title=docs/cplat/push 简单的介绍下原理: 百度云推送支持IOS和Androi ...

  3. Android服务一 创建启动服务

    若要学习创建绑定服务,请查看下篇Android服务二 创建绑定服务 启动服务 基于Service package service;import android.app.Service; import ...

  4. Qt创建Android服务

    Qt创建Android服务 创建Android服务 创建Android服务 从Qt 5.7开始,您可以使用Qt创建Android服务.服务是在后台运行的组件,因此它没有用户界面.执行长期操作(例如记录 ...

  5. Android 服务入门

    前言:硬着头皮把数据库SQLite看完了,接下来就是android服务了,因为自己本身就是菜鸟,所以呢,也只是做做笔记,技术上的东西就别指望我了. 1.什么是服务呢?举个例子,百度地图,美团外卖,OF ...

  6. android.os.binderproxy cannot be cast to,Android服务android.os.BinderProxy错误

    我一直在尝试使此android服务正常工作,但我不知道为什么会收到此错误. 05-13 12:13:36.203: ERROR/dalvikvm(7782): could not disable co ...

  7. android 服务自动结束,Android服务自动停止

    我正在制作一个带有闹钟功能的应用程序.我正在使用这种服务,不断检查设备的当前时间与我的数据库中的时间.Android服务自动停止 我的问题是,如果应用程序从后台删除或设备是rebooted,此serv ...

  8. Android服务函数远程调用源码分析

    在Android服务查询完整过程源码分析中介绍了客户进程向ServiceManager进程查询服务的完整过程,ServiceManager进程根据服务名称在自身维护的服务链表中查找ServiceMan ...

  9. Android服务查询完整过程源码分析

    Android服务注册完整过程源码分析中从上到下详细分析了Android系统的服务注册过程,本文同样针对AudioService服务来介绍Android服务的查询过程. 客户端进程数据发送过程 pri ...

  10. Android服务注册完整过程源码分析

    前面从不同片段分析了Android的Binder通信机制,本文结合前面介绍的内容,对整个Android的Binder通信过程进行一次完整的分析.分析以AudioService服务的注册过程为例. 由于 ...

最新文章

  1. rest-framework之解析器
  2. SpringBoot自定义参数验证器
  3. 彻底理解Java的feature模式
  4. 《低功耗蓝牙开发权威指南》——第2章基本概念
  5. VMWare虚拟机连接方式
  6. Halcon知识:如何用mfc显示halcon读入图象
  7. 我回答的一个粉丝关于模拟SAP事务的问题
  8. java_db常见错误总结
  9. BP神经网络预测(python)
  10. 搜索引擎系统的原理和实践
  11. 小黄的日记,爱情本该如此
  12. 2016年计算机b级考试试题,2016年全国计算机等级考试模拟试题一级B.doc
  13. 关于华为手机P20pro装包时总提示冲突问题
  14. YGG SEA 在越南成功启动
  15. html怎么让视频背景固定不动,视频如何做到背景不动人物动的效果?背景动人物不动的视频...
  16. 【工具】免费的英语语法在线检查工具收集汇总
  17. mysql最左前缀概念_Mysql的最左前缀匹配原则(上)
  18. 自媒体内容发布要求有哪些?
  19. 错误: 句法分析器6行里不能有多字节字符_汉语自动分词,对搜索引擎有多大影响?...
  20. Java工程师学习指南(初级篇)

热门文章

  1. Warning:关于_CRT_SECURE_NO_WARNINGS
  2. Python中的seek函数 指针 使用教程
  3. 『中级篇』Docker Cloud自动构建 Docker image(55)
  4. 使用云效在阿里云上进行一站式开发运维
  5. Microsoft Operations Management Suite 启用NPM网络性能监视
  6. QMessageBox 使用方法
  7. 数据工程师在未来将扮演不可或缺的角色
  8. JavaScript或jQuery中使用键盘控制对象运动
  9. aquamacs 夜间模式禁止滚动条
  10. Java Web 前端高性能优化(一)