1. 接口

接口可以隐藏代码内部的细节,只暴露程序员想暴露的方法

2. 利用上面的思想优化之前的案例:服务(service)之绑定服务调用服务里面的方法,如下:

(1)这里MainActivity.java:

 package com.itheima.bind;

 import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.view.View; public class MainActivity extends Activity {
IService myBinder; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
} protected void onDestory(Bundle savedInstanceState) {
super.onDestory();
-----;//解绑服务
} /**
* 绑定服务,获取服务里面的小蜜,间接的调用服务里面的方法。
* @param view
*/
public void bind(View view){
Intent intent = new Intent(this,DemoService.class);
//intent 意图
//conn 服务的通讯频道
//1 服务如果在绑定的时候不存在,会自动创建
System.out.println("1.采用bind的方式开启服务");
bindService(intent, new MyConn(), BIND_AUTO_CREATE);
} /**
* 解绑服务
* @param view
*/
public void unbind(View view){ System.out.println("解绑服务");
if(myBinder != null) {
unbindService(new MyConn());
myBinder = null;
} } /**
* 服务连接成功的通讯频道
*
*/
private class MyConn implements ServiceConnection{
//当服务被成功连接的时候调用的方法
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
System.out.println("3. 得到了服务的一个连接,通讯频道,获取到服务内部的小蜜");
myBinder = (IService) service;
System.out.println("4.把ibinder强制类型转化成小蜜 MyBinder");
}
//当服务失去连接的时候调用的方法
@Override
public void onServiceDisconnected(ComponentName name) { }
} /**
* 调用服务里面的方法。
* @param view
*/
public void call(View view){
System.out.println("5.利用mybinder间接的调用服务的方法");
myBinder.callMethodInService(600);
}
}

(2)其中的DemoService.java:

 package com.itheima.bind;

 import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.widget.Toast; public class DemoService extends Service { /**
* 在服务被绑定的时候调用的方法
*
* IBinder 服务内部的小蜜
*/
@Override
public IBinder onBind(Intent intent) {
System.out.println("2. 服务如果成功绑定会执行onbind,返回服务内部的小蜜 mybinder");
return new MyBinder();
}
/**
* 服务内部的小蜜,可以调用服务的方法
*
*/
private class MyBinder extends Binder implements IService{
/**
* 调用服务的方法。
* @param money 钱
*/
public void callMethodInService(int money){
if(money>500){
methodInService();
}else{
Toast.makeText(DemoService.this, "这点钱还想办事呀?", 0).show();
}
}
public void 打麻将(){
Toast.makeText(DemoService.this, "一起打麻将", 0).show();
}
public void 洗桑拿(){
Toast.makeText(DemoService.this, "一起洗桑拿", 0).show();
}
} /**
* 服务里面的方法
*/
public void methodInService(){
Toast.makeText(this, "哈哈,我是服务的方法,被你调用了。", 0).show();
} @Override
public void onCreate() {
System.out.println("服务被创建了");
super.onCreate();
}
@Override
public void onDestroy() {
System.out.println("服务被销毁了。");
super.onDestroy();
}
}

(3)接口IService.java:

package com.itheima.bind;

/**
* 定义的接口,暴露一个给钱办事的方法。
*/
public interface IService {
public void callMethodInService(int money);
}

其他文件代码不变

(4)工程一览图:

Android(java)学习笔记229:服务(service)之绑定服务调用服务里面的方法 (采用接口隐藏代码内部实现)的更多相关文章

  1. Android(java)学习笔记172:服务(service)之绑定服务调用服务里面的方法 (采用接口隐藏代码内部实现)

    1. 接口 接口可以隐藏代码内部的细节,只暴露程序员想暴露的方法 2. 利用上面的思想优化之前的案例:服务(service)之绑定服务调用服务里面的方法,如下: (1)这里MainActivity.j ...

  2. Android:日常学习笔记(7)———探究UI开发(1)

    Android:日常学习笔记(7)———探究UI开发(1) 常用控件的使用方法 TextView 说明:TextView是安卓中最为简单的一个控件,常用来在界面上显示一段文本信息. 代码: <T ...

  3. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  4. Java学习笔记4

    Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...

  5. 20155234 2016-2017-2第十周《Java学习笔记》学习总结

    20155234第十周<Java学习笔记>学习总结 教材学习内容总结 网络编程 在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接收到指定 ...

  6. Android:日常学习笔记(2)——分析第一个Android应用程序

    Android:日常学习笔记(2)——分析第一个Android应用程序 Android项目结构 整体目录结构分析 说明: 除了APP目录外,其他目录都是自动生成的.APP目录的下的内容才是我们的工作重 ...

  7. java学习笔记之基础篇

    java选择语句之switch   //switch可以用于等值判断 switch (e) //int ,或则可以自动转化成int 的类型,(byte char short)枚举jdk 7中可以防止字 ...

  8. Android Studio 学习笔记(一)环境搭建、文件目录等相关说明

    Android Studio 学习笔记(一)环境搭建.文件目录等相关说明 引入 对APP开发而言,Android和iOS是两大主流开发平台,其中区别在于 Android用java语言,用Android ...

  9. Java web与web gis学习笔记(二)——百度地图API调用

    系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...

随机推荐

  1. 小A项目为什么加班

    1.负责架构搭建的人搭建完成架构后,没有进行落地性验证:导致真正要用到的时候才发现spring没有配置:需要对架构人员的进度和内容进行跟踪,在跟踪进度的时候需要强调落地性: 2.负责架构搭建的人没有提 ...

  2. 转:Win7 IIS7应用PHP Manager使用FastCGI通道快速部署PHP支持

    原文来自于:http://www.jb51.net/os/windows/62390.html 正常情况下,我们在Windows系统中部署WEB服务器(iis)支持PHP是采用ISAPI通道.参照这篇 ...

  3. [BZOJ 3209] 花神的数论题 【数位统计】

    题目链接: BZOJ - 3209 题目大意 设 f(x) 为 x 的二进制表示中 1 的个数.给定 n ,求 ∏ f(i)     (1 <= i <= n) . 题目分析 总体思路是枚 ...

  4. HDU1106

    为了给学弟学妹讲课,我又水了一题-- 1: import java.util.*; 2: import java.io.*; 3: 4: public class HDU1106 5: { 6: pu ...

  5. JavaScript API

    HTML5 DOM, BOM, XMLHttpRequest, NodeJS, Framework Framework---------------> jQuery zepto Undersco ...

  6. JQuery 判断IPad、IPhone、Android是横屏还是竖屏(Window.Orientation实现)

    在ipad.iphone网页开发中,我们很可能需要判断是横屏或者竖屏.下面就来介绍如何用 jQuery 判断iPad.iPhone.Android是横屏还是竖屏的方法. 代码如下: function ...

  7. UVA 10706 Number Sequence (找规律 + 打表 + 查找)

    Problem B Number Sequence Input: standard input Output: standard output Time Limit: 1 second A singl ...

  8. MySQL表损坏预防与修复

    1.       表损坏的原因分析 以下原因是导致mysql 表毁坏的常见原因: 1. 服务器突然断电导致数据文件损坏. 2. 强制关机,没有先关闭mysql 服务. 3. mysqld 进程在写表时 ...

  9. Microsoft Office 2013 激活方法

    Microsoft Office 2013 激活方法   Microsoft Office 2013是微软的新一代Office办公软件,全面采用Metro界面,包括Word.PowerPoint.Ex ...

  10. 高级数据结构(树状数组套主席树):ZOJ 2112 Dynamic Rankings

    Dynamic Rankings Time Limit: 10 Seconds      Memory Limit: 32768 KB The Company Dynamic Rankings has ...