service 知识要点讲解
来源:互联网 发布:广告页设计软件 编辑:程序博客网 时间:2024/05/11 02:59
将字符串解析成Long值
try {
if (!TextUtils.isEmpty(periodStr))
period = Long.parseLong(periodStr) * 60 * 1000;
} catch (Exception e) {
Log.i(TAG, "Long.parseLong(periodStr) :" + e.toString());
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent == null) {
Log.i(TAG, "onStartCommand -- no intent , no restart.");
stopSelf();
return START_NOT_STICKY;
}
Log.i(TAG, "onStartCommand -- has intent");
return super.onStartCommand(intent, flags, startId);
}
与onStart区别?
1. <service android:enabled="true" android:name=".MyService" />
其中android:enabled属性的值为true,表示MyService服务处于激活状态。虽然目前MyService是激活的,但系统仍然不会启动MyService,要想启动这个服务。必须显式地调用startService方法。
以上方法启动服务,并且未调用stopService来停止服务,这个服务就会随着Android系统的启动而启动,随着Android系统的关闭而关闭。也就是服务会在Android系统启动后一直在后台运行,直到Android系统关闭后服务才停止。 我想问的是下次启动时没有调用startService呢?
在 service 中使用Binder 这样的作用是将 调用bindService(serviceIntent, serviceConnection, Context.BIND_AUTO_CREATE); 的activity与该service 绑定
public class MyBinder extends Binder
52. {
53. MyService getService()
54. {
55. return MyService.this;
56. }
57. }
在 onServiceConnected中就可以这样: myService = ((MyService.MyBinder) service).getService(); 获得service。
onServiceConnected方法中的第2个参数是一个IBinder类型的变量,将该参数转换成MyService.MyBinder对象,并使用MyBinder类中的getService方法获得MyService对象。在获得MyService对象后,就可以在Activity中随意操作MyService了。并且,MyService在activity退出时会调用onUnbind 。解除绑定,activity销毁时,service被销毁。。。
如果先启动(调用startService方法)一个服务,然后再绑定(调用bindService方法)服务,会怎么样呢?在这种情况下,虽然服务仍然会成功绑定到Activity上,但在Activity关闭后,服务虽然会被解除绑定,但并不会被销毁,也就是说,MyService类的onDestroy方法不会被调用。
// 要想在Service中启动Activity,必须设置如下标志
17. activityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
使用AIDL关键代码: onBind方法必须返回MyServiceImpl类的对象实例,否则客户端无法获得服务对象
8. public class MyService extends Service
9. {
10. public class MyServiceImpl extends IMyService.Stub
11. {
12. @Override
13. public String getValue() throws RemoteException
14. {
15. return "Android/OPhone开发讲义";
16. }
17. }
18. @Override
19. public IBinder onBind(Intent intent)
20. {
21. return new MyServiceImpl();
22. }
23. }
<service
android:name=".download.NewDownloadService"
android:process=":ottdownservice" >
</service>
process 的作用?
什么是IntentService?有何优点?
IntentService也是一个Service,是Service的子类,
IntentService和Service有所不同,通过Looper和 Thread来解决标准Service中处理逻辑
的阻塞问题
AILD使用规则:
如果方法的类型是非简单类型,例如,String、List或自定义的类,需要使用in、out或inout修饰。其中in表示这个值被客户端设置;out表示这个值被服务端设置;inout表示这个值既被客户端设置,又被服务端设置。
try {
if (!TextUtils.isEmpty(periodStr))
period = Long.parseLong(periodStr) * 60 * 1000;
} catch (Exception e) {
Log.i(TAG, "Long.parseLong(periodStr) :" + e.toString());
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent == null) {
Log.i(TAG, "onStartCommand -- no intent , no restart.");
stopSelf();
return START_NOT_STICKY;
}
Log.i(TAG, "onStartCommand -- has intent");
return super.onStartCommand(intent, flags, startId);
}
与onStart区别?
1. <service android:enabled="true" android:name=".MyService" />
其中android:enabled属性的值为true,表示MyService服务处于激活状态。虽然目前MyService是激活的,但系统仍然不会启动MyService,要想启动这个服务。必须显式地调用startService方法。
以上方法启动服务,并且未调用stopService来停止服务,这个服务就会随着Android系统的启动而启动,随着Android系统的关闭而关闭。也就是服务会在Android系统启动后一直在后台运行,直到Android系统关闭后服务才停止。 我想问的是下次启动时没有调用startService呢?
在 service 中使用Binder 这样的作用是将 调用bindService(serviceIntent, serviceConnection, Context.BIND_AUTO_CREATE); 的activity与该service 绑定
public class MyBinder extends Binder
52. {
53. MyService getService()
54. {
55. return MyService.this;
56. }
57. }
在 onServiceConnected中就可以这样: myService = ((MyService.MyBinder) service).getService(); 获得service。
onServiceConnected方法中的第2个参数是一个IBinder类型的变量,将该参数转换成MyService.MyBinder对象,并使用MyBinder类中的getService方法获得MyService对象。在获得MyService对象后,就可以在Activity中随意操作MyService了。并且,MyService在activity退出时会调用onUnbind 。解除绑定,activity销毁时,service被销毁。。。
如果先启动(调用startService方法)一个服务,然后再绑定(调用bindService方法)服务,会怎么样呢?在这种情况下,虽然服务仍然会成功绑定到Activity上,但在Activity关闭后,服务虽然会被解除绑定,但并不会被销毁,也就是说,MyService类的onDestroy方法不会被调用。
// 要想在Service中启动Activity,必须设置如下标志
17. activityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
使用AIDL关键代码: onBind方法必须返回MyServiceImpl类的对象实例,否则客户端无法获得服务对象
8. public class MyService extends Service
9. {
10. public class MyServiceImpl extends IMyService.Stub
11. {
12. @Override
13. public String getValue() throws RemoteException
14. {
15. return "Android/OPhone开发讲义";
16. }
17. }
18. @Override
19. public IBinder onBind(Intent intent)
20. {
21. return new MyServiceImpl();
22. }
23. }
<service
android:name=".download.NewDownloadService"
android:process=":ottdownservice" >
</service>
process 的作用?
什么是IntentService?有何优点?
IntentService也是一个Service,是Service的子类,
IntentService和Service有所不同,通过Looper和 Thread来解决标准Service中处理逻辑
的阻塞问题
AILD使用规则:
如果方法的类型是非简单类型,例如,String、List或自定义的类,需要使用in、out或inout修饰。其中in表示这个值被客户端设置;out表示这个值被服务端设置;inout表示这个值既被客户端设置,又被服务端设置。
0 0
- service 知识要点讲解
- shell 知识基础要点 非讲解
- Service要点
- 知识要点
- Service Broker 要点
- Service Broker 要点
- Android Service 要点总结
- Service要点总结
- Service要点全解析
- Service要点全解析
- C++知识要点
- 嵌入式软件工程师知识要点
- COM知识要点
- 数据结构之知识要点
- 知识要点备份
- XML知识要点
- iOS开发知识要点
- iOS开发知识要点
- Android中Timer使用方法
- 文艺范儿的程序猿和攻城狮们
- Jenkins/Hudson自动化构建有关Maven兼容问题处理
- 动态内存申请实例(一)
- memcached hash表
- service 知识要点讲解
- 黑马程序员 改善C#编程的50个建议——属性
- CCS程序烧写软件设置步骤
- C语言条件编译及编译预处理阶段
- 浅谈邮件营销标题优化技巧
- ORA-12154: TNS: 无法解析指定的连接标识符
- C#中跨数据库增删改的事务控制
- 【转】编写Testbench的一些技巧
- 【桌面虚拟化】之七网络设计