服务端:只有服务,没有界面

1.编写interface文件,复制到 .aidl 文件中,并去掉其中的public 等修饰符。系统会自动在gen目录下生成对应的java文件  (对应本地调用中的接口文件)

  aaarticlea/png;base64,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" alt="" />

2.编写service,其中内部类的自定义bind 只需要继承Stub即可。(本地调用则需要继承Bind 并实现 interface接口)

 public class PayService extends Service {

     @Override
public IBinder onBind(Intent intent) {
return new Pay();
}
public class Pay extends Stub {
@Override
public void pay(String userName, String password, String sendToAccount, float money) throws RemoteException {
toPay(userName, password, sendToAccount, money);
}
}
public void toPay(String userName, String password, String sendToAccount, float money){
System.out.println(userName + "@" + password + " to " + sendToAccount + "$" + money);
} }

3.清单文件中注册,添加intent-filter 项,以便于被调用

  <service android:name="cn.pay.service.PayService" >
            <intent-filter>
                <action android:name="cn.pay.service.PayService" />
            </intent-filter>
        </service>

========================================================分隔线========================================================

客户端:

  在activity中自定义ServiceConnection的内部类。转化接口实例的方法用 接口类名.Stub.asInterface(service)  (本地调用是直接将service强转为接口实例)

 

 package com.example.aidlpayclient;

 import cn.pay.aidl.IPayService;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.view.Menu;
import android.view.View; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //绑定服务
conn=new MyServiceConnection();
bindService(new Intent("cn.pay.service.PayService"), conn, Context.BIND_AUTO_CREATE);
} private MyServiceConnection conn = null;
private IPayService iPayService; private class MyServiceConnection implements ServiceConnection { @Override
public void onServiceConnected(ComponentName name, IBinder service) {
iPayService = IPayService.Stub.asInterface(service);
System.out.println("绑定成功");
} @Override
public void onServiceDisconnected(ComponentName name) {
iPayService = null;
} } public void pay(View v) {
System.out.println("begin pay");
try {
//调用方法.
iPayService.pay("a", "b", "c", 100);
} catch (RemoteException e) {
e.printStackTrace();
}
System.out.println("end pay");
} }

android 中activity调用远程service中的方法之 aidl的使用的更多相关文章

  1. android 中activity调用本地service中的方法。

    1.自定义一个接口,暴露服务中的方法 public interface IService {    /**服务中对外暴露的方法 */    void methodInService();} 2.自定一 ...

  2. Android Activity与远程Service的通信学习总结

    当一个Service在androidManifest中被声明为 process=":remote", 或者是还有一个应用程序中的Service时,即为远程Service, 远程的意 ...

  3. html中引入调用另一个html的方法

    html中引入调用另一个html的方法,尝试了好几种,都列出来: 其中第一种是最好的,其他的方法,可以尝试看看,是不是适合你当前项目 一.div+$("#page1").load( ...

  4. 【安卓面试题】在一个Activity启动另一个Activity和在Service中启动一个Activity有什么区别

    在Activity中可以直接使用Intent启动另一个Activity 显式Intent intent = new Intent(context, activity.class) 隐式 Intent ...

  5. Android悬浮框,在Service中打开悬浮窗;在Service中打开Dialog;

    文章介绍了如何在Service中显示悬浮框,在Service中弹出Dialog,在Service中做耗时的轮询操作: 背景需求: 公司的项目现在的逻辑是这样的:发送一个指令,然后3秒一次轮询去查询这个 ...

  6. Android 儿子Activity在启动过程中的流程组件 &amp;&amp; 儿子Activity在一个新的进程组件启动过程

    1.儿子Activity在启动过程中的流程组件 在Android Activity启动过程http://blog.csdn.net/jltxgcy/article/details/35984557一文 ...

  7. 项目中Ajax调用ashx页面中的Function的实战

    前台页面: 使用几个display=none的空间存储DropdownList中的值,点击Search Button后刷新页面再次给DropdownList赋值使用 <%@ Page Langu ...

  8. C代码中如何调用C++ C++中如何调用C

    注意这里的C调用C++或者C++调用C意思是.c文件中调用.cpp文件中代码,或者相反. 集成开发环境如VC++6.0或者vs都是以文件后缀来区别当前要编译的是C代码还是C++代码,然后采用响应的编译 ...

  9. Magento中,调用静态块的几种方法

    在后台创建一个order_form静态块Block Title :Order FormIdentifier :order_formStatus :EnabledContent :自定义内容 1.如果要 ...

随机推荐

  1. php 配置本地自定义域名

    一.设置host文件 二.设置httpd.conf # Virtual hosts Include conf/extra/httpd-vhosts.conf 三.设置httpd-vhosts.conf ...

  2. 2、JavaScript常用互动方法

    一.输出内容(document.write) document.write() 可用于直接向 HTML 输出流写内容.简单的说就是直接在网页中输出内容. 第一种:输出内容用“”括起,直接输出" ...

  3. python模块(sys)

    SYS模块 sys.argv # 命令行参数List,第一个元素是程序本身路径 sys.exit(n) # 退出程序,正常退出时exit(0) sys.version # 获取Python解释程序的版 ...

  4. WPF 程序检测 windows 关机

    1.使用SessionEnding事件 参考MSDN. 2.在需要处理 关机事件中可以注册SessionEnding事件 App.Current.SessionEnding += Current_Se ...

  5. MetInfo标签函数及参数

    参数标签直接在页面中调用标签代码即可: 函数标签需要在页面PHP嵌入代码中通过参数定义转换方可使用,如$metlang=methtml_lang('-'),点击函数标签代码可查看函数标签详细使用方法: ...

  6. Jenkins自动构建

    Jenkins is an award-winning, cross-platform, continuous integration and continuous delivery applicat ...

  7. 利用最新版的RubyMine2016.2开发Ruby On Rails 程序

    经过我的前两篇博文 ”Ruby On Rails环境搭建“ 和”Ruby On Rails 环境搭建MySQL数据库连接“ 我们已经具备了开发Ruby On Rails程序的一切要素,但是天天对着do ...

  8. ofbiz进击 。 ofbiz 退货流程(包含获取可退货项流程分析 以及 取消退货项的过程分析)

    根据订单获取可退货项流程分析 退货的时候,调用 services_return.xml 中的获取可进行退货的退货项  getReturnableItems  ,该服务调用了Java类 org.ofbi ...

  9. Kafka集群模式部署

    环境:kafka 0.8.1.1 基本概念 Kafka维护按类区分的消息,称为主题(topic) 生产者(producer)向kafka的主题发布消息 消费者(consumer)向主题注册,并且接收发 ...

  10. Bootstrap布局设计

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...