启动远程service的两种方式:显示和隐式
2016-06-19 10:48
429 查看
1、显式启动
Service端:
需要声明android:exported="true",这样别的APP才能访问。
<service android:name=" com.easyliu.watchgesture.service.GestureDetectorService "
android:exported= "true">
客户端:
需要知道Sercvice的名字以及其Application所在的包名。
public static final String NAME_GESTURE_DETECTOR_REMOTE_SERVICE = "com.easyliu.watchgesture.service.GestureDetectorService" ;
public static final String PACKAGE_GESTURE_DETECTOR_REMOTE_SERVICE = "com.easyliu.watchgestureremoteservice" ;
//启动服务
Intent startIntent = new Intent ();
ComponentName componentName = new ComponentName(
PACKAGE_GESTURE_DETECTOR_REMOTE_SERVICE ,
NAME_GESTURE_DETECTOR_REMOTE_SERVICE);
startIntent .setComponent (componentName );
startService( startIntent) ;
//绑定服务
Intent startIntent = new Intent ();
ComponentName componentName = new ComponentName(
PACKAGE_GESTURE_DETECTOR_REMOTE_SERVICE ,
NAME_GESTURE_DETECTOR_REMOTE_SERVICE);
startIntent .setComponent (componentName );
bindService( startIntent, mConnection, Context.BIND_AUTO_CREATE) ;
2、隐式启动
Service端:
需要设置一个Action,我们可以把Action的名字设置成Service的全路径名字。在这种情况下android:exported默认为true。
<service android:name="com.easyliu.watchgesture.service.GestureDetectorService">
<intent-filter >
<action android:name="com.easyliu.watchgesture.service.GestureDetectorService" />
</intent-filter>
</service >
客户端:
需要同时设置Action和package,记住之设置Action会报错,必须同时设置其包名。
Intent startIntent = new Intent ();
startIntent .setAction ("com.easyliu.watchgesture.service.GestureDetectorService" );
startIntent .setPackage (PACKAGE_GESTURE_DETECTOR_REMOTE_SERVICE);
startService( startIntent) ;
Android官网推荐用显式的方式启动Service。
关于Service详细介绍,请看:/article/11881334.html
Service端:
需要声明android:exported="true",这样别的APP才能访问。
<service android:name=" com.easyliu.watchgesture.service.GestureDetectorService "
android:exported= "true">
客户端:
需要知道Sercvice的名字以及其Application所在的包名。
public static final String NAME_GESTURE_DETECTOR_REMOTE_SERVICE = "com.easyliu.watchgesture.service.GestureDetectorService" ;
public static final String PACKAGE_GESTURE_DETECTOR_REMOTE_SERVICE = "com.easyliu.watchgestureremoteservice" ;
//启动服务
Intent startIntent = new Intent ();
ComponentName componentName = new ComponentName(
PACKAGE_GESTURE_DETECTOR_REMOTE_SERVICE ,
NAME_GESTURE_DETECTOR_REMOTE_SERVICE);
startIntent .setComponent (componentName );
startService( startIntent) ;
//绑定服务
Intent startIntent = new Intent ();
ComponentName componentName = new ComponentName(
PACKAGE_GESTURE_DETECTOR_REMOTE_SERVICE ,
NAME_GESTURE_DETECTOR_REMOTE_SERVICE);
startIntent .setComponent (componentName );
bindService( startIntent, mConnection, Context.BIND_AUTO_CREATE) ;
2、隐式启动
Service端:
需要设置一个Action,我们可以把Action的名字设置成Service的全路径名字。在这种情况下android:exported默认为true。
<service android:name="com.easyliu.watchgesture.service.GestureDetectorService">
<intent-filter >
<action android:name="com.easyliu.watchgesture.service.GestureDetectorService" />
</intent-filter>
</service >
客户端:
需要同时设置Action和package,记住之设置Action会报错,必须同时设置其包名。
Intent startIntent = new Intent ();
startIntent .setAction ("com.easyliu.watchgesture.service.GestureDetectorService" );
startIntent .setPackage (PACKAGE_GESTURE_DETECTOR_REMOTE_SERVICE);
startService( startIntent) ;
Android官网推荐用显式的方式启动Service。
关于Service详细介绍,请看:/article/11881334.html
相关文章推荐
- Linux 系统应用编程——网络编程(服务器模型)
- cts-基础库tradefederation配置
- js---javaScript 1、语法实例
- Linux内核部件分析 连通世界的list
- 系统抖动
- Windows7下安装搭建play框架
- C:移位运算符
- 用python从pdf中提取信息,转为txt或者html
- Linux内核部件分析 设备驱动模型之device-driver
- Arduino 卡片10舵机初动
- Java千百问_01基本概念(013)_Socket、SocketChannel有什么区别
- 专题四1004
- 什么是数据仓库
- 进程通信之信号的运用
- 深度学习-图像识别更多的理解
- Mysql命令行插入语句输入汉字就报错"1366"
- Java学习日志之BeanUtils&junit
- Linux内核部件分析 设备驱动模型之bus
- Linux下静态IP地址的设置及TFTP服务的搭建
- Thread 与 Runnable