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

wordpress新手建站win8网站模版

wordpress新手建站,win8网站模版,四川建设网官,动漫网站html一. 概览 Service 是一种可在后台执行长时间运行操作而不提供界面的应用组件。服务可由其他应用组件启动#xff0c;而且即使用户切换到其他应用#xff0c;服务仍将在后台继续运行。此外#xff0c;组件可通过绑定到服务与之进行交互#xff0c;甚至是执行进程间通信 (IPC…一. 概览 Service 是一种可在后台执行长时间运行操作而不提供界面的应用组件。服务可由其他应用组件启动而且即使用户切换到其他应用服务仍将在后台继续运行。此外组件可通过绑定到服务与之进行交互甚至是执行进程间通信 (IPC)。例如服务可在后台处理网络事务、播放音乐执行文件 I/O 或与内容提供程序进行交互. 本篇文章,我们重点讲一讲绑定服务.  为后面写的理解进程间通信机制文章做个铺垫. 二. 服务类型 2.1 前台服务 前台服务执行一些用户能注意到的操作。例如音频应用会使用前台服务来播放音频曲目。前台服务必须显示通知。即使用户停止与应用的交互前台服务仍会继续运行。 2.2 后台服务 后台服务执行用户不会直接注意到的操作。例如如果应用使用某个服务来进行数据搜集上报则此服务通常是后台服务。 2.3  绑定服务 当应用组件通过调用 bindService() 绑定到服务时服务即处于绑定状态。绑定服务会提供客户端-服务器接口以便组件与服务进行交互、发送请求、接收结果甚至是利用进程间通信 (IPC) 跨进程执行这些操作。仅当与另一个应用组件绑定时绑定服务才会运行。多个组件可同时绑定到该服务但全部取消绑定后该服务即会被销毁。 三. 基础知识 如要创建服务您必须创建 Service 的子类或使用它的一个现有子类。在实现中您必须重写一些回调方法从而处理服务生命周期的某些关键方面并提供一种机制将组件绑定到服务如适用。以下是你应该重写的最重要的回调方法 onStartCommand() 当另一个组件如 Activity请求启动服务时系统会通过调用 startService() 来调用此方法。执行此方法时服务即会启动并可在后台无限期运行。 如果您实现此方法则在服务工作完成后需负责通过调用 stopSelf() 或 stopService() 来停止服务。 onBind() 当另一个组件想要与服务绑定例如执行 RPC时系统会通过调用 bindService() 来调用此方法。在此方法的实现中您必须通过返回 IBinder 提供一个接口以供客户端用来与服务进行通信。请务必实现此方法但是如果你并不希望允许绑定则应返回 null。 如果组件通过调用 startService() 启动服务这会引起对 onStartCommand() 的调用则服务会一直运行直到其使用 stopSelf() 自行停止运行或由其他组件通过调用 stopService() 将其停止为止。 [注意]: 如果通过startService()已经启动了一个服务,再通过startService()方法启动的时候,  只会走onStartCommand()方法,不会重新走onCreate()方法.  四. 创建绑定服务 绑定服务允许应用组件通过调用 bindService() 与其绑定从而创建长期连接. 如需与 Activity 和其他应用组件中的Service服务进行交互或需要通过进程间通信 (IPC) 向其他应用公开某些应用功能则应创建绑定服务。 [要点]: 如要创建绑定服务您需通过实现 onBind() 回调方法返回 IBinder从而定义与服务进行通信的接口; 1. 必须定义指定客户端如何与服务进行通信的接口。 2. 服务与客户端之间的这个接口必须是 IBinder 的实现并且服务端必须从 onBind() 回调方法返回该接口。 3. 收到 IBinder 后客户端便可开始通过该接口与服务端进行交互。 多个客户端可以同时绑定到服务。完成与服务的交互后客户端会通过调用 unbindService() 来取消绑定。如果没有绑定到服务的客户端则系统会销毁该服务。 等同于下面这句话的理解: 多个客户端可以绑定到相同服务而且当所有绑定全部取消后系统即会销毁该服务(服务不必自行停止运行). 五. 服务生命周期 六. 实践出真知 本篇文章重点只讲绑定本地服务, 在同一个进程间通信.  如果您的服务仅供本地应用使用且无需跨进程工作您可以实现自有 Binder 类让客户端通过该类直接访问服务中的公共方法。 注意只有当客户端和服务处于同一应用和进程内最常见的情况时此方式才有效。例如对于需要将 Activity 绑定到在后台播放音乐的自有服务的音乐应用此方式非常有效。 实现步骤: 1. 在你的服务中创建可执行以下某种操作的 Binder 实例      包含客户端可调用的公共方法。     返回当前的 Service 实例该实例中包含客户端可调用的公共方法。     返回由服务承载的其他类的实例其中包含客户端可调用的公共方法。 2. 从 onBind() 回调方法返回此 Binder 实例。 3. 在客户端中从 onServiceConnected() 回调方法接收 Binder并使用提供的方法调用绑定服务。 客户端代码 public class LocalClient extends AppCompatActivity {private Intent intent;//同一进程, 本地服务对象LocalService mService;//是否绑定成功boolean mBound false;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);intent new Intent(this, LocalService.class);Button btn (Button)findViewById(R.id.start_btn);btn.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {if(mBound) {int num mService.getRandomNumber();Toast.makeText(LocalClient.this, number: num, Toast.LENGTH_SHORT).show();}}});}private ServiceConnection connection new ServiceConnection() {Overridepublic void onServiceConnected(ComponentName componentName, IBinder service) {Log.e(test, 客户端onServiceConnected);mBound true;//已经绑定到LocalService强制转换IBinder并获取LocalService实例LocalService.LocalBinder binder (LocalService.LocalBinder) service;mService binder.getService();}Overridepublic void onServiceDisconnected(ComponentName componentName) {Log.e(test, onServiceDisconnected);mBound false;}};//在onstart方法中 调用 bindservice 绑定服务Overrideprotected void onStart() {super.onStart();bindService(intent, connection, Context.BIND_AUTO_CREATE);}//在onstop方法中, 调用unbindservice 解绑服务Overrideprotected void onStop() {super.onStop();unbindService(connection);mBound false;}Overrideprotected void onDestroy() {super.onDestroy();}本地服务端的代码: public class LocalService extends Service {// Binder given to clientsprivate final IBinder binder new LocalBinder();// Random number generatorprivate final Random mGenerator new Random();public LocalService() {}/** method for clients */public int getRandomNumber() {return mGenerator.nextInt(100);}/*** Class used for the client Binder. Because we know this service always* runs in the same process as its clients, we dont need to deal with IPC.* 用于客户端的Binder类。因为我们知道该服务总是在与其客户端相同的进程中运行所以我们不需要处理IPC。*/class LocalBinder extends Binder {LocalService getService() {// Return this instance of LocalService so clients can call public methodsreturn LocalService.this;}}Overridepublic IBinder onBind(Intent intent) {Log.e(test, LocalService onBind绑定服务回调);return binder;}Overridepublic boolean onUnbind(Intent intent) {Log.e(test, LocalService onUnbind解绑服务回调);return super.onUnbind(intent);}打开app界面后,打印log: 03-06 15:16:16.612 19858 19858 E test : LocalService onBind绑定服务回调 03-06 15:16:16.623 19858 19858 E test : 客户端onServiceConnected 客户端通过bindservice 绑定服务, 打印LocalService  onBind然后服务端通过onBind()回调方法返回此Binder实例 在客户端中从 onServiceConnected() 回调方法接收 Binder对象,打印客户端onServiceConnected 退出app界面后, 解绑服务,打印log: 03-06 15:22:52.460 19858 19858 E test : LocalService onUnbind解绑服务回调
http://www.w-s-a.com/news/557004/

相关文章:

  • 网站的简单布局孝感 商务 网站建设
  • 湖北手机版建站系统价格优化网站内容
  • 网站后台登录不显示验证码软文发布网站
  • 企业微网站建设方案收费的网站如何免费
  • 平昌县建设局网站中国500强企业有哪些
  • 网站开发制作的流程是什么网页打不开显示不安全怎么办
  • 网络网站开发设计安徽建设工程信息网怎么打不开了
  • 百度网站推广申请深圳公众号制作
  • 百度站长怎么做网站维护中国深圳航空公司官网
  • xampp安装网站模板海南一家天涯社区
  • 网站建设 管理系统开发仿租号网站源码网站开发
  • 怎么自己弄网站免费网站设计用什么软件
  • 网站分几种access做网站数据方法
  • 网站默认图片s001网站建设公司
  • 淘宝的电子商务网站的建设东莞哪里有网站制作公司
  • 西安网站制作怎么联系wordpress登陆界面打开慢
  • 高端工作网站网站推广seo代理
  • 一般找素材都是做哪几个网站呢推广引流工具
  • 必须做网站等级保护html网页设计题库
  • 移动端网站开发 float手机在线建网站
  • 教育网站模板下载做汽车网站开题报告的意义
  • 网站首页做后台链接昌平网站制作
  • 营销型门户网站建设浏览器下载免费大全
  • 快三网站开发推广普通话手抄报内容50字
  • 沈阳专业做网站开发公司asp网站搭建教程
  • 网站建设代码福州小程序开发平台
  • 了解做房产广告的网站手机版官方网站的建设
  • 如何与别的网站做友情链接做网站排名大概要多少钱
  • 东莞市锂电池网站建设HTML5怎么做自适应网站
  • 江苏城乡建设学校网站群晖建立wordpress