Android中的Service基础
Service主要用于后台程序和跨进程访问,可以在不显示界面的前提下完成任务,不影响用户的其他操作。
这里我展示一些基本的用法
新建一个Service类
package com.example.service; 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 {
private IBinder myBinder=new Binder(){
public String getInterfaceDescriptor(){
return "MyServerceUtil class.";
} };
public IBinder onBind(Intent intent)//绑定时触发
{
Toast.makeText(getApplicationContext(),"服务绑定",Toast.LENGTH_SHORT).show();
return myBinder;
}
public void onRebind(Intent intent)//重新绑定时触发
{
super.onRebind(intent);
}
public boolean onUnbind(Intent intent)//解除绑定时触发
{Toast.makeText(getApplicationContext(),"服务解绑",Toast.LENGTH_SHORT).show();
return super.onUnbind(intent);
} public void onCreate(){
super.onCreate(); }//创建时触发
public void onDestroy(){
super.onDestroy();
Toast.makeText(getApplicationContext(),"服务销毁",Toast.LENGTH_SHORT).show();
} public int onStartCommand(Intent intent,int flags,int startId)//启动时触发
{
Toast.makeText(getApplicationContext(),"服务启动",Toast.LENGTH_SHORT).show(); return Service.START_NOT_STICKY;
}
}
在Mainactivity中调用
package com.example.service; import androidx.appcompat.app.AppCompatActivity; 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.view.View;
import android.widget.Button; public class MainActivity extends AppCompatActivity {
private Button start=null;
private Button bind=null;
private Button stop=null;
private Button unbind=null; private ServiceConnection serviceConnection =new ServiceConnection() {
@Override
//连接
public void onServiceConnected(ComponentName name, IBinder service) { } @Override
//断开连接
public void onServiceDisconnected(ComponentName name) { }
};
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start=(Button)super.findViewById(R.id.start);
stop=(Button)super.findViewById(R.id.stop);
bind=(Button)super.findViewById(R.id.bind);
unbind=(Button)super.findViewById(R.id.unbind);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MainActivity.this.startService(new Intent(MainActivity.this,MyService.class));
}
});
stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MainActivity.this.stopService(new Intent(MainActivity.this,MyService.class));
}
});
bind.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//绑定
MainActivity.this.bindService(new Intent(MainActivity.this,MyService.class),
MainActivity.this.serviceConnection, Context.BIND_AUTO_CREATE);
}
});
unbind.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//解除绑定
MainActivity.this.unbindService(MainActivity.this.serviceConnection);
}
});
}
}
服务的onCreate()函数在服务第一次启动时会执行一次,之后若不销毁的话再次启动就不会执行,只执行onStartCommand
绑定的用途是把Activity与Service绑定在一起,绑定后当Activity停止时,Service也会停止;未绑定时Activity退出后,Service会仍然运行。
Android中的Service基础的更多相关文章
- (转载)Android中的Service:Binder,Messenger,AIDL(2)
前言 前面一篇博文介绍了关于Service的一些基本知识,包括service是什么,怎么创建一个service,创建了一个service之后如何启动它等等.在这一篇博文里有一些需要前一篇铺垫的东西,建 ...
- (转载)所有分类 > 开发语言与工具 > 移动开发 > Android开发 Android中的Service:默默的奉献者 (1)
前言 这段时间在看一些IPC相关的东西,这里面就不可避免的要涉及到service,进程线程这些知识点,而且在研究的过程中我惊觉自己对这些东西的记忆已经开始有些模糊了——这可要不得.于是我就干脆花了点心 ...
- Android 中的 Service 全面总结(转载)
转载地址:http://www.cnblogs.com/newcj/archive/2011/05/30/2061370.html 感谢作者 Android 中的 Service 全面总结 1.Ser ...
- Android中的一些基础知识(一)
翻译自这里,并做了部分修改. 什么是Android? Android是为移动设备提供的软件,它包括操作系统.中间件.和一些关键的应用程序.应用程序执行它自己的进程和在Dalvik虚拟机中的实例. An ...
- Android中Canvas绘图基础详解(附源码下载) (转)
Android中Canvas绘图基础详解(附源码下载) 原文链接 http://blog.csdn.net/iispring/article/details/49770651 AndroidCa ...
- Android中的一些基础知识(二)
这几天在回顾Android的基础知识,就把一些常见的知识点整理一下,以后忘了也可以翻出来看一看. 简单介绍一下Activity的生命周期 在API文档中对生命周期回调的函数描述的很详细,这里我只是翻译 ...
- Android中的Service小结
简介 Service适合执行不需要和用户交互,而且长期运行的任务.即使程序被切换回后台,服务仍然可以正常运行.Service并不自动开启线程,默认运行在主线程中. Service中需要重载的函数 on ...
- Android 中的 Service 全面总结
1.Service的种类 按运行地点分类: 类别 区别 优点 缺点 应用 本地服务(Local) 该服务依附在主进程上, 服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另 ...
- Android 中的 Service 全面总结 (转)
原文地址:http://www.cnblogs.com/newcj/archive/2011/05/30/2061370.html 1.Service的种类 按运行地点分类: 类别 区别 优点 ...
随机推荐
- BZOJ 1025 [SCOI2009]游戏 (DP+分解质因子)
题意: 若$a_1+a_2+\cdots+a_h=n$(任意h<=n),求$lcm(a_i)$的种类数 思路: 设$lcm(a_i)=x$, 由唯一分解定理,$x=p_1^{m_1}+p_2^{ ...
- mongodb 常用操作命令
1.关闭mongodbuse admindb.shutdownServer() 2.报错 not master and slaveok=falsers.slaveOk(); 3.查看集群副本的状态rs ...
- 一个工程中cpp文件的编译顺序
做了一个实验. 最后build失败,失败的原因是变量i被重定义了.原本按照我的思路,是不应该失败的.因为我用了条件编译,若先编译Source.cpp,则会#define __HEADER_H__并且定 ...
- Python socket 基础(Client) - Foundations of Python Socket
Python socket 基础- Foundations of Python Socket 建立socket - establish socket import socket s = socket. ...
- zookeeper从入门到放弃
第1章 Zookeeper入门 1.1 概述 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目. 1.2 特点 1.3 数据结构 1.4 应用场景 提供的服务包括:统 ...
- 关于ELF文件和BIN文件
ELF文件执行过程 ELF文件有操作系统的加载器loader执行,比如linux,windows,对于3803处理器是grmon的load命令. 加载器会读取ELF文件program header,比 ...
- lwip的netif状态管理
netif的状态变化可以设置回调函数, 主要有三项变化, 1 netif up or down,address change,address state change(IPv6) 2 link up ...
- 交换机 路由器 防火墙asa 安全访问、配置 方式
这里交换机 路由器 暂时统称为 网络设备 我们一般管理网络设备采用的几种方法 一般来说,可以用5种方式来设置路由器: 1. Console口接终端或运行终端仿真软件的微机(第一次配置要使用此方式) ...
- VMware克隆Linux虚拟机报错
在VMware里克隆了2个centos6.5,执行命令重启网卡服务报以下错误: Bringing up interface eth0: Device eth0 does not seem to be ...
- Ubuntu下LAMP的环境配置教程
总体来说,Ubuntu下安装LAMP环境是比较简单的,只需按照命令行执行即可,记录操作以备不时之需. 一,首先更新Ubuntu里面所有的软件 sudo apt-get update 二.之后安装Apa ...