当前位置: 首页 > news >正文

网站开发第三方登录设计深圳推广服务

网站开发第三方登录设计,深圳推广服务,大气红色网站,自建企业网站模板下载因为工作中经常需要解决一些framework层的问题,而framework层功能一般都是system service 的代理stub,然后封装相关接口,并提供给APP层使用,system service则在不同的进程中运行,这样实现了分层,隔离&#…

        因为工作中经常需要解决一些framework层的问题,而framework层功能一般都是system service 的代理stub,然后封装相关接口,并提供给APP层使用,system service则在不同的进程中运行,这样实现了分层,隔离,跨进程等需求。

        下面以Vibrator为例,总结一下实现流程

  1. 定义一个抽象类Vibrator定义了应用中可以访问的一些抽象方法
    frameworks/base/core/java/android/os/Vibrator.java
  2. 定义具体的类SystemVibrator继承Vibrator实现抽象方法
    frameworks/base/core/java/android/os/SystemVibrator.java
  3. 定义一个AIDL接口文件IVibratorService.aidl定义系统服务接口
    frameworks/base/core/java/android/os/IVibratorService.aidl
  4. 定义服务VibratorService,实现IVibratorService定义的接口
    frameworks/base/services/java/com/android/server/VibratorService.java

public class VibratorService extends IVibratorService.Stub

5.将VibratorServicey添加到系统服务
frameworks/base/services/java/com/android/server/SystemServer.java

VibratorService vibrator = null; 

... 

//实例化VibratorService并添加到ServiceManager 

Slog.i(TAG, "Vibrator Service"); 

vibrator = new VibratorService(context);

ServiceManager.addService("vibrator", vibrator);

... 

//通知服务系统启动完成 

try { 

vibrator.systemReady();

 } catch (Throwable e) { 

reportWtf("making Vibrator Service ready", e); 

}

6.在SystemVibrator中通过IVibratorService的代理连接到VibratorService,这样SystemVibrator的接口实现里就可以调用IVibratorService的接口:
frameworks/base/core/java/android/os/SystemVibrator.java

private final IVibratorService mService;

 ...

public SystemVibrator() {

 ...

mService = IVibratorService.Stub.asInterface( ServiceManager.getService("vibrator"));

 ...

public boolean hasVibrator() {

 ...

try {

return mService.hasVibrator();

} catch (RemoteException e) { }

 ...

}

}

7.在Context里定义一个代表Vibrator服务的字符串
frameworks/base/core/java/android/content/Context.java

public static final String VIBRATOR_SERVICE = "vibrator";

8.注册SystemVibrator,在ContextImpl里添加SystemVibrator的实例化过程static方法中注册 registerService
frameworks/base/core/java/android/app/ContextImpl.java

registerService(VIBRATOR_SERVICE, new ServiceFetcher() {

public Object createService(ContextImpl ctx) {

 return new SystemVibrator(ctx);

}});

9.在应用中使用Vibrator的接口

Vibrator mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); mVibrator.vibrate(500);

10.为保证编译正常,还需要将AIDL文件添加到编译配置里
frameworks/base/Android.mk

LOCAL_SRC_FILES += \

...

core/java/android/os/IVibratorService.aidl \

上面的流程在location service和Bluetooth service等流程基本一致,也可以参照上面流程,实现自定义的系统服务,比如车机开发中经常面临这样的需求。

http://www.qdjiajiao.com/news/11146.html

相关文章:

  • 在网站后台可以修改网页的内容代写
  • b站黄页推广软件专业的网站优化公司
  • 潍坊建设部门管理网站高端网站建设公司哪家好
  • 网站注册账号怎么做南昌关键词优化软件
  • 海南省建设执业中心网站外包seo服务口碑好
  • 公司找私人做网站seo案例分析100例
  • 百度的网站收录怎么做建站平台在线提交功能
  • 公司网站关键词优化seo入门视频
  • 郑州市人民政府官方网站重庆seo和网络推广
  • 工控主机做网站服务器百度知道小程序
  • 想建设一个网站 一般多少钱seo关键词推广公司
  • 做网站网站建设专业公司今日国际军事新闻
  • 贵港网站建设兼职百度识图网页版在线使用
  • 做网站的用多少钱怎么让百度收录我的网站
  • 企业把网站关闭原因seo咨询推广
  • 网站做优化有什么好处seo网站推广服务
  • 什么网站可以做数据调查西安seo优化
  • 在自己的电脑建设空间网站成都网络推广中联无限
  • 做网站简单还是app简单百度数据平台
  • 漂亮的网站单页安卓系统优化app
  • 河南网站备案地址小程序推广方案
  • 做网站虚拟主机规格热门网站
  • 免费下载策划书的网站南通网络推广
  • 义乌个人兼职做建设网站网络推广是什么
  • 敦化网站建设c++培训班学费一般多少
  • wordpress https 版面错乱百度推广怎么优化排名
  • 库尔勒谁在做电商网站建设爱采购seo
  • 如何做中英版网站十大免费b2b网站
  • 网站建设业务百度推广销售员好做吗
  • 2345网址导航站石家庄百度seo排名