你的位置:首页 > 软件开发 > Java > Andriod Service 基础知识

Andriod Service 基础知识

发布时间:2016-10-09 00:00:05
Service 分为两类 A started service  被开启的service通过其他组件调用 startService()被创建。  这种service可以无限地运行下去,必须调用stopSelf()方法或者其他组件调用stopService()方法来停止 ...

Andriod Service 基础知识

Service  分为两类 

A started service

  被开启的service通过其他组件调用 startService()被创建。

  这种service可以无限地运行下去,必须调用stopSelf()方法或者其他组件调用stopService()方法来停止它。

  当service被停止时,系统会销毁它。

A bound service

  被绑定的service是当其他组件(一个客户)调用bindService()来创建的。

  客户可以通过一个IBinder接口和service进行通信。

  客户可以通过 unbindService()方法来关闭这种连接。

  一个service可以同时和多个客户绑定,当多个客户都解除绑定之后,系统会销毁service。(简单来说就是依附于被绑定的Activity)

 

Andriod Service 基础知识

下面贴代码:

package com.jredu.helloworld.activity;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.content.ServiceConnection;import android.os.Bundle;import android.os.IBinder;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import com.jredu.helloworld.R;import com.jredu.helloworld.service.MyService;public class ServiceActivity extends AppCompatActivity {  Button bind;  Button unbind;  Button start;  Button stop;  MyService myService;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_service);    bind = (Button) findViewById(R.id.bind);    unbind = (Button) findViewById(R.id.unbind);    start = (Button) findViewById(R.id.start);    stop = (Button) findViewById(R.id.stop);    bind.setOnClickListener(new View.OnClickListener() {      @Override      public void onClick(View v) {        Intent intent = new Intent(ServiceActivity.this, MyService.class);        bindService(intent, connection, Context.BIND_AUTO_CREATE);// 第一个参数为意图,第二个参数判断连接状态,第三个参数绑定的一种方式      }    });    unbind.setOnClickListener(new View.OnClickListener() {      @Override      public void onClick(View v) {        if (myService != null) {          unbindService(connection);    //接触绑定          myService = null;        }      }    });    start.setOnClickListener(new View.OnClickListener() {      @Override      public void onClick(View v) {        Intent intent = new Intent(ServiceActivity.this, MyService.class);        startService(intent);    //开始服务      }    });    stop.setOnClickListener(new View.OnClickListener() {      @Override      public void onClick(View v) {        Intent intent = new Intent(ServiceActivity.this, MyService.class);        stopService(intent);    //关闭服务      }    });  }  /*ServiceConnection是一个接口,该接口用于监听服务与启动源之间的链接与断开状态*/  ServiceConnection connection = new ServiceConnection() {     /*当服务与启动源绑定时调用*/    /**     * 在这里还涉及到IBinder,当启动源和服务成功链接后,可以获取到IBinder对象,     * 通过IBinder对象,启动源与服务可以完成通信。     * 在实际开发中通常采用继承Binder(实现了IBinder接口)来实现自己IBinder对象。     */    @Override    public void onServiceConnected(ComponentName name, IBinder service) {      myService = ((MyService.MyBinder) service).getService();    }    /*当程序因异常而断开服务与启动源之间链接时调用*/    @Override    public void onServiceDisconnected(ComponentName name) {    }  };}

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:Andriod Service 基础知识

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录