设为首页 加入收藏

TOP

Android学习笔记--远程服务的使用(三)
2017-10-12 10:07:48 】 浏览:10121
Tags:Android 学习 笔记 远程 服务 使用
ot;remoteService.getPid(): " + pid1 + " remoteService.basicTypes(): " + pid2); } catch (RemoteException e) { e.printStackTrace(); } } }; @Override protected void onDestroy() { super.onDestroy(); /*正规做法是设置标记位,标志服务是否已经unbind,来决定是否调用unbindService * 此处,简便行事,默认此时服务已经unbind
*/
        //unbindService(conn);
    }
}

4、注意事项

1、Android5.0以后,不允许隐式调用服务,所以必须制定要调用的服务所在的包名(调了一下午才调通)

2、通过客户端的打印结果,可以知道当调用getpid和basicTypes的接口时,服务器端处理客户端调用的线程是不一样的。具体原因需要深入学习下Binder的机制

3、与本地服务的不同在于,服务器端返回的是继承自Binder的Stub类型的Binder,客户端获取服务器端的handle时使用了Stub的asInterface接口。另外服务器端需要在AndroidMainfest.xml中声明服务时指定android:process属性。

4、AIDL中支持以下的数据类型

    Java 的原生类型
    String 和CharSequence
    List 和 Map ,List和Map 对象的元素必须是AIDL支持的数据类型;  以上三种类型都不需要导入(import)
    AIDL 自动生成的接口  需要导入(import)
    实现android.os.Parcelable 接口的类.  需要导入(import)。

5、总结

使用远程服务流程总结如下;

1、定义AIDL文件,声明该服务需要向外提供的接口

2、在服务器中实现AIDL中定义的接口

3、在AndroidMainfest.xml中声明远程服务

4、客户端中拷贝服务端的AIDL文件

5、客户端中指定服务器的服务名称和所在包,进行绑定

6、客户端使用Stub.asInterface接口获取服务器的hander,调用服务提供的接口

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇KOTLIN开发语言文档(官方文档) .. 下一篇OpenGL ES学习笔记(二)——平滑..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目