博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
service启动和停止,绑定和解除绑定
阅读量:7222 次
发布时间:2019-06-29

本文共 2740 字,大约阅读时间需要 9 分钟。

service的作用就是不和用户进行交互,比如网络连接,服务器推送

首先要创建一个service

package com.example.servicedemoone;

import android.app.Service;

import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.widget.Toast;

public class Myservice extends Service {

@Override

public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return new Binder();
//返回一个binder
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
Toast.makeText(this, "启动", Toast.LENGTH_SHORT).show();
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Toast.makeText(this, "停止", Toast.LENGTH_SHORT).show();
}
}

然后在配置文件里进行注册

<service

android:name="com.example.servicedemoone.Myservice"
android:enabled="true"
android:exported="false"
/>

最后通过点击按钮对servise进行启动和关闭

package com.example.servicedemoone;

import android.os.Bundle;

import android.os.IBinder;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener,

ServiceConnection {
private Button btn_start;
private Button btn_stop;
private Button btn_bind;
private Button btn_unbind;
private Intent intent;

@Override

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_start = (Button) findViewById(R.id.btn_start);
btn_stop = (Button) findViewById(R.id.btn_stop);
btn_bind = (Button) findViewById(R.id.btn_bind);
btn_unbind = (Button) findViewById(R.id.btn_unbind);
intent = new Intent(MainActivity.this, Myservice.class);
btn_start.setOnClickListener(this);
btn_stop.setOnClickListener(this);
btn_bind.setOnClickListener(this);
btn_unbind.setOnClickListener(this);

}

@Override

public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_start:
startService(intent);
break;
case R.id.btn_stop:
stopService(intent);
break;
case R.id.btn_bind:
//绑定服务,传入的参数分别是intent,服务的连接,这时候需要实现一个
//ServiceConnection,最后一个是固定的
bindService(intent, this, Context.BIND_AUTO_CREATE);
break;

case R.id.btn_unbind:
//解除绑定,传入的参数也是服务连接,也要实现ServiceConnection
unbindService(this);
break;
}
}

@Override

public void onServiceConnected(ComponentName arg0, IBinder arg1) {
// 服务被绑定成功后调用
Log.d("msg", "service conn");
}

@Override

public void onServiceDisconnected(ComponentName arg0) {
//服务所在进程崩溃时调用,或者说杀掉时候调用

}

}

 service开始启动的时候会执行oncreate(),销毁的时候会执行ondestory();onStartCommand会不断的被执行

转载于:https://www.cnblogs.com/84126858jmz/p/4869685.html

你可能感兴趣的文章
webpack学习(六) -- webpack自动生成html文件并引入js包
查看>>
被操纵的BCE与去中心化的BCH
查看>>
Spring-bean的几种循环依赖方式
查看>>
Linux相关分享
查看>>
Python进阶之道
查看>>
滑动吸顶效果
查看>>
闭包的一点浅见
查看>>
settimeout和promise执行顺序
查看>>
Spring boot注解
查看>>
设计模式学习专栏六--------适配器模式
查看>>
Vue中使用echarts绘制地图,以及只显示南海问题
查看>>
JAVA面试题(26)
查看>>
从零实现一个 Webpack Loader
查看>>
整合spring cloud云架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)
查看>>
算法与数据结构1800题 之字符串(二)
查看>>
3分钟了解GraphQL
查看>>
你好,你有一份MySQL性能管理及架构设计指南待领取
查看>>
为什么HashMap不安全?
查看>>
swift2 语法 语法 判断键盘高度
查看>>
企业级 SpringBoot 教程 (一)构建第一个SpringBoot工程
查看>>