Service的基本操作

Service的基本操作,启动service的方式有两种,一种是context.startService,暂停的service是stopService,这种方式service与主activity没有关联,不能单纯的进行数据交互(可以考虑使用广播,进行交互),另一种方式binderService,这种方式返回的是一个binder对象,

binderService(Intent service,ServiceConnection conn,int flag):第一个参数是intent对象,第二个是链接对象,第三个是否自动创建service,0是不自动创建,BINDER_AUTO_CREATE

public class MyService extends Service {

public MyService() {

}

public int count = 0 ;

public MyBinder binder = new MyBinder();

public class MyBinder extends Binder {

// 创建一个集成Binder类的对象,activity调用service的时候返回一个Binder对象给activity

public int getCount(){

count = 10 ;

return count ;

}

}

@Override

public IBinder onBind(Intent arg0) {

// 必须实现的方法

return binder;

}

@Override

public void onCreate() {

// 每次创建的时候执行一次,

System.out.println("onCreate");

super.onCreate();

}

@Override

public int onStartCommand(Intent intent, int flags, int startId) {

// service每次运行的时候执行

System.out.println("onStartCommand");

return super.onStartCommand(intent, flags, startId);

}

@Override

public void onDestroy() {

// 销毁的之后执行

System.out.println("onDestroy");

super.onDestroy();

}

}

public class MainActivity extends Activity implements OnClickListener {

private Button start, stop, get;

MyService.MyBinder binder;

private ServiceConnection conn = new ServiceConnection() {

@Override

public void onServiceDisconnected(ComponentName name) {

// 链接断开的时候进行掉用

System.out.println("service链接断开");

}

@Override

public void onServiceConnected(ComponentName name, IBinder service) {

// 进行链接的时候进行调用

System.out.println("service链接成功");

binder = (MyService.MyBinder) service;

}

};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

start = (Button) findViewById(R.id.start);

stop = (Button) findViewById(R.id.stop);

get = (Button) findViewById(R.id.get);

this.start.setOnClickListener(this);

this.stop.setOnClickListener(this);

this.get.setOnClickListener(this);

}

@Override

public void onClick(View view) {

switch (view.getId()) {

case R.id.start:

// 第二种启动方式

Intent in = new Intent(MainActivity.this, MyService.class);

bindService(in, conn, Service.BIND_AUTO_CREATE);

// 第一种启动方式,activity关闭的时候service也会随着关闭

// Intent in = new Intent(MainActivity.this,MyService.class) ;

// MainActivity.this.startService(in) ;

break;

case R.id.stop:

// 第二种关闭方式

unbindService(conn);

// 第一种启动方式,activity关闭的时候service也会随着关闭

// Intent in2 = new Intent(MainActivity.this,MyService.class) ;

// MainActivity.this.stopService(in2) ;

break;

case R.id.get:

// 获取状态

System.out

.println("=====service返回的值======>>>>" + binder.getCount());

break;

default:

break;

}

}

}

时间: 2024-10-11 13:33:52

Service的基本操作的相关文章

SQL Service 数据库 基本操作 视图 触发器 游标 存储过程

use NewTest1 ---声明视图--- create view NewViewte as select StudentInfo.name as 姓名,StudentInfo.sex as 性别,course.name as 课程 from StudentInfo join Course on StudentInfo.Cid= Course.id ---调用视图 select * from NewViewte --- 声明触发器--- create trigger NewTri on Cl

Centos7安装完成后一些基本操作

基本操作一:主机名 centos7有一个新的修改主机名的命令hostnamectl # hostnamectl set-hostname --static www.node1.com # vim /etc/hosts --最后加上你的IP与主机名的绑定 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6

Android - 位置定位(Location)服务(Service)类的基本操作

位置定位(Location)服务(Service)类的基本操作 本文地址: http://blog.csdn.net/caroline_wendy 定位服务,可以确定移动设备的地址,在地图相关服务中,经常会使用GPS和移动相关的定位服务,GPS较为精准. 根据常用的定位服务功能,又添加网络检测和Wifi检测,和启动相关界面进行测试的功能. 代码: import android.content.Context; import android.content.Intent; import andro

android service基本操作

service 四大组件之一,开启后可以一直运行在系统后台.至于其他概念性问题我就不说了,直接操作把  具体内容在代码注释中有 先看下效果图 上布局文件把 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="m

windows Service

用c#中创建一个windows服务非常简单,与windows服务相关的类都在System.ServiceProcess命名空间下. 每个服务都需要继承自ServiceBase类,并重写相应的启动.暂停.停止等方法. windows服务的相关信息是存放与注册表中的,所以他可以在不需要用户登录的情况下自动运行,在c#中你不需要再直接向注册表中添加信息了,c#提供了服务安装类 ServiceProcessInstaller和ServiceInstaller来实现服务的安装. 首先,用vs创建一个win

SharePoint 2013 Odata 常用实例和基本操作

SharePoint2013Odata常用实例基本操作 本文讲述SharePoint 2013 Odata 常用实例和基本操作. Open Data Protocol (OData)是一个基于Rest风格的数据服务,同过这个服务可以使用同一的URI定位到具体的资源(文件和记录等),从而使得这些资源可以使用HTTP请求进行增删改查,它定义了一系列的规则,使得资源更容易被定位和操作. 首先看一下OData定义的URI结构: 那么相对SharePoint 2013,一个简单的实例为: http://m

centos 基本操作

centos 开启终端默认时不禁止的,所以得手动开启(可自定义键盘)菜单:System->Preferences->Keyboard Shortcuts在Desktop分类下找到"Run a terminal"点击Run a terminal,按下需要的快捷键,比如Ctrl+Alt+T,即可.以下操作有:复制:Shift+Ctrl+C粘贴:Shift+Ctrl+V开启新窗口:Shift+Ctrl+N开启新分页(Tab):Shift+Ctrl+T分页之间切换:1.Alt+1.

MySQL学习笔记-安装和基本操作

MySQL学习笔记-安装和基本操作   1.安装MySQL 1 # yum -y install mysql mysql-server mysql-devel 添加/etc/my.conf配置: 1 vi /etc/my.conf2 [mysqld]3 default-character-set=utf84 character_set_server=utf85 [client]6 default-character-set=utf8 2.启动和停止MySQL服务: # service mysql

centos防火墙基本操作

CentOS防火墙的基本操作 查看防火墙状态: [[email protected] ~]# service iptables status 开放8080访问端口: [[email protected] ~]# vi /etc/sysconfig/iptables 重启防火墙后查看 停止防火墙: [[email protected] ~]# service iptables stop 启动防火墙: [[email protected] ~]# service iptables start 重启防