24 服务AIDL
AIDL远程访问服务的方法
- 创建一个接口类写上方法 然后修改后缀java为aidl
- 在服务中创建一个类继承Stub类
- 在远程访问服务的进程把AIDL文件复制(包名不能改变)
XXXX.Stub.asInterface(service);即可
服务端结构
MainActivity.java
无实际代码MyService.java
package com.qf.day24_aidl_server;
import com.qf.day24_aidl_server.MyInterface.Stub;
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
public class MyService extends Service{
    @Override
    public IBinder onBind(Intent intent) {
        return new MyBinder();
    }
    //Stub extends android.os.Binder implements com.qf.day24_aidl_server.MyInterface
    public class MyBinder extends Stub{
        @Override
        public String getServiceData() {
            return name();
        }
    }
    //服务里的方法
    public String name(){
        return "田师傅红烧肉";
    }
    @Override
    public void onCreate() {
        super.onCreate();
    }
    @Override
    public boolean onUnbind(Intent intent) {
        return super.onUnbind(intent);
    }
    @Override
    public void onDestroy() {
        super.onDestroy();
    }
}
MyInterface.aidl
package com.qf.day24_aidl_server;
 interface MyInterface {
     String getServiceData();
}
清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.qf.day24_aidl_server"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.qf.day24_aidl_server.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=".MyService">
            <intent-filter >
                <action android:name="com.qf.day24_aidl_server.MyService"/>
            </intent-filter>
        </service>
    </application>
</manifest>
客户端
MainActivity.java
package com.qf.day24_aidl_client;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
import android.view.View;
import com.qf.day24_aidl_server.MyInterface;
public class MainActivity extends Activity {
    private MyInterface myInterface;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Intent intent = new Intent("com.qf.day24_aidl_server.MyService");
        //6.0必须设置
        intent.setPackage("com.qf.day24_aidl_server");
        bindService(intent, new MyServiceConn(), Context.BIND_AUTO_CREATE);
    }
    //点击 获取Service里数据
    public void MyClick(View v){
        String name;
        try {
            name = myInterface.getServiceData();
            Log.e("AAA", "===>"+name);
        } catch (RemoteException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    public class MyServiceConn implements ServiceConnection{
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            // TODO Auto-generated method stub
            myInterface = MyInterface.Stub.asInterface(service);
            //myInterface = myBinder;
        }
        @Override
        public void onServiceDisconnected(ComponentName name) {
            // TODO Auto-generated method stub
        }
    }
}
MyInterface.aidl
package com.qf.day24_aidl_server;
 interface MyInterface {
     String getServiceData();
}
24 服务AIDL的更多相关文章
- 服务 AIDL 定向tag IPC Parcelable 案例 MD
		Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ... 
- C#开发BIMFACE系列24 服务端API之获取模型数据9:获取单个房间信息
		系列目录 [已更新最新开发文章,点击查看详细] 大厦建筑模型中,基本上包含多个楼层,每个楼层包含多个房间等信息.在<C#开发BIMFACE系列21 服务端API之获取模型数据6:获取单模 ... 
- android 学习随笔十八(广播与服务 )
		1.广播接收者注册 清单文件注册(Android四大组件都要在清单文件中注册) 一旦应用部署,广播接收者就生效了,直到用户手动停止应用或者应用被删除 广播接收者可以使用代码注册 需要广播接收者运行时, ... 
- java 服务治理办法
		在大规模服务化之前.应用可能仅仅是通过RMI或Hessian等工具.简单的暴露和引用远程服务,通过配置服务的URL地址进行调用.通过F5等硬件进行负载均衡. (1) 当服务越来越多时.服务URL配置管 ... 
- Android开发全套视频教程在线观看网盘下载
		千锋金牌讲师老罗老师简介: 国内第一批Android教学讲师,10多年软件开发经验,6年多教学经验,曾担任广东电信北京分公司移动事业部项目经理,主持过微软中国平台考试系统.山西省旅游局智能化平台等大型 ... 
- linux系统运维常用基本命令详解
		1.ls 文件属性: -:普通文件 d:目录文件 b:块设备 c:字符设备文件 l:符号连接文件 p:命令管道 s:套接字文件 文件权限: 9位数字,每3位一组 文件硬链接次数 ... 
- 急!JDBC问题,发生通信错误。错误位置:Reply.fill()。消息:数据不足。 ERRORCODE=-4499, SQLSTATE=08001
		代码如下:Class.forName("com.ibm.db2.jcc.DB2Driver");Connection conn = DriverManager.getConnect ... 
- 如何使用 Quagga BGP(边界网关协议)路由器来过滤 BGP 路由
		在之前的文章中,我们介绍了如何使用 Quagga 将 CentOS 服务器变成一个 BGP 路由器,也介绍了 BGP 对等体和前缀交换设置.在本教程中,我们将重点放在如何使用前缀列表prefix-li ... 
- android学习笔记57——Service_2
		Service生命周期 参考:http://codingnow.cn/android/515.html 应用程序启动服务的方式不同,其生命周期也有所不同. startService生命周期如下左图: ... 
随机推荐
- 机器学习技法:13 Deep Learning
			Roadmap Deep Neural Network Autoencoder Denoising Autoencoder Principal Component Analysis Summary 
- Struts2--二次提交
			在Struts2中,使用token的方式来防止二次提交.并且在默认的拦截器栈中提供了两个默认拦截器Token Interceptor和Token Session Interceptor.必须要在for ... 
- UVA11404:Palindromic Subsequence
			回文子串dp,最小字典序的话需要记录一下,注意是string型的,不能只记录一个字符,因为可能出现相等的情况 #include<cstdio> #include<cstdlib> ... 
- web框架和django基础(粗糙版)
			web框架本质: 浏览器:socket客户端 服务器:socket服务端 1.自己写socket服务端(最傻) #!/usr/bin/env python ... 
- WebStorm 快捷键一览
			查找/代替 快捷键 说明 ctrl+shift+N 通过文件名快速查找工程内的文件(必记) ctrl+shift+alt+N 通过一个字符快速查找位置(必记) ctrl+F 在文件内快速查找代码 F3 ... 
- git日常使用经验积累
			1 git merge origin/develop 将远程分支合并到本地,一般先执行合并,解决冲突,然后再git commit合入新建的分支,推送到远程分支里面,最后码云上找pl pull requ ... 
- 如何理解主函数main中变量(int argc,char *argv[])的含义
			每一个C语言的初学者,都会注意到主函数main()里的两个参数,但是初学者一般不会去关注这两个参数的具体作用,下面我们就来介绍这两个参数的具体作用. main()函数是控制台程序的入口,int mai ... 
- C语言程序设计第五次作业——循环结构1
			(一)改错题 输出华氏摄氏温度转换表:输入两个整数lower和upper,输出一张华氏摄氏温度转换表,华氏温度的取值范围是{lower,upper},每次增加2℉.计算公式如下: c = 5×(f-3 ... 
- java的迭代器详解
			迭代器的引出 在jdk1.5版本之前是没有 foreach的,然而1.5版本就加上了foreach,而引入的新的foreach功能并不是在jvm上进行改进的因为代价太高,甲骨文工程师想到了一个比较好的 ... 
- Spring之定时器(QuartzJobBean)的实现
			需求:做个分配任务的功能模块,在任务截止前的十五分钟进行提醒(发送邮件.短信.系统提醒).每隔五分钟提醒一次,直到任务完成! 想法:刚开始是想着是不是可以做个监听器,监听截止时间.当时间到了开始进 ... 
