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的种类 按运行地点分类: 类别 区别 优点 ...
随机推荐
- HDU_2167_状态压缩dp
http://acm.hdu.edu.cn/showproblem.php?pid=2167 第一道状态压缩dp,其实就是爆搜,只不过把排除了大量不可能的情况,先用sta保存每行可能的情况,sum[i ...
- sqlserver partitition and partition table --- partition show
I can not believe that I had done this about two years Now we know there is totally different betwee ...
- Python原来这么好学-1.1节: 在windows中安装Python
这是一本教同学们彻底学通Python的高质量学习教程,认真地学习每一章节的内容,每天只需学好一节,帮助你成为一名卓越的Python程序员: 本教程面向的是零编程基础的同学,非科班人士,以及有一定编程水 ...
- pytorch-- Attention Mechanism
1. paper: Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translat ...
- CentOS7.x以上版本配置DNS失效解决办法
这2周做实验,centos7.x经常出现yum安装软件包的时候找不到解析地址,提示如下错误 正在尝试其它镜像. Error downloading packages: pam-devel-1.1.8- ...
- 【算法总结】图论/dp-动态规划 大总结
写于一只蹲在角落的蒟蒻-Z__X... 2020.2.7,图论和 \(dp\) 终于告一段落.蓦然回首,好似已走过许多...不曾细细品味,太多太多又绵延不断地向我涌来... 谨以此纪念 逝去 的图论和 ...
- Red Team 指南-第1章 红队和红队概述
第1章 红队和红队概述 贡献者:Tony Kelly @infosectdk # 翻译者 BugMan 什么是红队?它来自哪里? 红队的起源是军事起源.人们意识到,为了更好地防御, 需要攻击自己的防御 ...
- 【转载】python_logging模块
原文:https://www.cnblogs.com/liujiacai/p/7804848.html 1 logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志 ...
- 5G和AI会碰撞出什么样的火花呢?
本文学习和分享一篇综述文章,这篇文章是东南大学移动通信国家重点实验室主任.长江学者特聘教授尤肖虎教授2019年发表在<中国科学 信息科学>(<SCIENCE CHINA Inform ...
- ASPNetCore 发布到IIS
ASPNetCore 发布到IIS 准备工作 1.1. 安装IIS.(具体操作不再说明) 安装成功后再浏览器输入localhost得到的页面如下 1.2. 安装dotnet-hosting-2.2 ...