您的位置:首页 > 其它

启动远程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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: