Android Service详解(二)第一个Service
Service中有四个重要函数:
public IBinder onBind(Intent arg0); //必须实现,返回接口给Servicepublic void onCreate(); //Service创建时调用public void onStart(Intent intent,int startId);//通过startService()会调用public void onDestroy(); //销毁时StopService()调用
通过StartActivity()函数启动Service,当第一次调用时会分别调用onCreate()和onStart在();
之后只会调用onStart();
通过函数StopService()结束Service,会调用onDestroy();
调用BindService():当Service未创建时调用onCreate()和onBind();当创建了只调用onBind();
使用函数bindService()和函数unbindService()可以绑定和解除绑定
对已经绑定的Service调用bindService()无效,即多次调用bindService()和调用一次bindService()一样。 unbindService()只能使用一次,即对于一个绑定的Service,只能调用一次unbindService(),多次调用会产生错误
该函数原型为:
bindService(Intent,ServiceConnection,BIND_AUTO_CREATE);
ServiceConnection是一个服务连接类,必须实现以下两个函数:
public void onServiceConnected(ComponentName arg0, IBinder arg1)//连接成功时调用
public void onServiceDisconnected(ComponentName arg0) //连接失败时调用
示例如下:
private ServiceConnection conn=new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName arg0, IBinder arg1) {// TODO Auto-generated method stubToast.makeText(MainActivity.this, "success", Toast.LENGTH_LONG).show();Log.i("SERVICE","success");}@Overridepublic void onServiceDisconnected(ComponentName arg0) {// TODO Auto-generated method stubToast.makeText(MainActivity.this, "errer", Toast.LENGTH_LONG);Log.i("SERVICE","errer");}
Service实例:
MainActivity.java:
private ServiceConnection conn=new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName arg0, IBinder arg1) {// TODO Auto-generated method stubToast.makeText(MainActivity.this, "success", Toast.LENGTH_LONG).show();Log.i("SERVICE","success");}@Overridepublic void onServiceDisconnected(ComponentName arg0) {// TODO Auto-generated method stubToast.makeText(MainActivity.this, "errer", Toast.LENGTH_LONG);Log.i("SERVICE","errer");}
};
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button1=(Button)this.findViewById(R.id.btn1);Button button2=(Button)this.findViewById(R.id.btn3);Button button3=(Button)this.findViewById(R.id.btn4);Button button4=(Button)this.findViewById(R.id.btn5);button1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubstartService(new Intent(MainActivity.this,NewService.class));}});button2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubstopService(new Intent(MainActivity.this,NewService.class));}});button3.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubbindService(new Intent(MainActivity.this,NewService.class),conn,BIND_AUTO_CREATE);}});button4.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubunbindService(conn);}});
}
NewService.java:
public class NewService extends Service {@Overridepublic IBinder onBind(Intent arg0) {// TODO Auto-generated method stubToast.makeText(NewService.this, "onBind", Toast.LENGTH_LONG).show();Log.i("SERVICE","onbind");return null;}public void onCreate() {super.onCreate();Log.i("SERVICE","oncreat");Toast.makeText(NewService.this, "onCreat", Toast.LENGTH_LONG).show();}public void onStart(Intent intent,int startId) {Log.i("SERVICE","onstart");Toast.makeText(NewService.this, "onStart", Toast.LENGTH_LONG).show();}public void onDestroy() {Log.i("SERVICE","ondestory");Toast.makeText(NewService.this, "onDestory", Toast.LENGTH_LONG).show();}
}
Activity.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><Button android:id="@+id/btn1" android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="start"/><Button android:id="@+id/btn3" android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="stop"/><Button android:id="@+id/btn4" android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="bind"/><Button android:id="@+id/btn5" android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="unbind"/> </LinearLayout>
AndroidManifest.xml增加:
<service android:name="com.example.new1.NewService"/>
转载于:https://blog.51cto.com/aslonely/1616665
Android Service详解(二)第一个Service相关推荐
- Android Linker详解(二)
Android Linker详解(二) Android Linker详解(二) 本文目的 So的链接 So重定位 总结 本文目的 接上篇Linker源码详解(一),本文继续来分析Linker的链接过程 ...
- java stopself_Android Service详解(二)---StartService
一丶概述 启动服务由另一个组件通过调用 startService() 启动,这会导致调用服务的 onStartCommand() 方法. 服务启动之后,其生命周期即独立于启动它的组件,并且可以在后台无 ...
- android动画详解二 属性动画原理
property动画是一个强大的框架,它几乎能使你动画任何东西.你可以定义一个动画来改变对象的任何属性,不论其是否被绘制于屏幕之上.一个属性动画在一定时间内多次改变一个属性(对象的一个字段)的值.要动 ...
- android菜单详解二:选项菜单
创建一个选项菜单 选项菜单里应该包含基本的activity动作和必须的导航条目 (例如,一个打开程序设置的菜单项). 选项菜单的菜单项有两种不同的选择方法,一是菜单项按钮,二是通过 Action Ba ...
- Android Fragment详解(二):Fragment创建及其生命周期
Fragments的生命周期 每一个fragments 都有自己的一套生命周期回调方法和处理自己的用户输入事件. 对应生命周期可参考下图: 创建片元(Creating a Fragment) To c ...
- android Fragments详解
android Fragments详解一:概述 android Fragments详解二:创建Fragment 转载于:https://my.oschina.net/liangzhenghui/blo ...
- android子视图无菜单,Android 菜单详解
Android中菜单分为三种,选项菜单(OptionMenu),上下文菜单(ContextMenu),子菜单(SubMenu) 选项菜单 可以通过两种办法增加选项菜单,一是在menu.xml中添加,该 ...
- Android Service 详解一:概述
一个Service是没有界面且能长时间运行于后台的应用组件.其它应用的组件可以启动一个服务运行于后台,即使用户切换到另一个应用也会继续运行.另外,一个组件可以绑定到一个service来进行交互,即使这 ...
- android service是什么,Android service是什么 Android service详解
Android service是什么 Android service详解 时间:2017-04-06 来源:Android开发学习网 什么是Android Service? service是A ...
- 安卓 linux init.rc,[原创]Android init.rc文件解析过程详解(二)
Android init.rc文件解析过程详解(二) 3.parse_new_section代码如下: void parse_new_section(struct parse_state *state ...
最新文章
- 【转载】有软件开发,就要有软件测试!
- python将文本转化成语音并播放
- Java的Object类
- ajax 上传读取excel
- 上午写了一段代码,下午就被开除了,奇怪的知识又增加了
- 原神创意工坊工具箱2.0源码-小程序前端源码
- 我用 Python 破解了同事的加密压缩包!
- day04.2-迭代器
- getUrlParam,jQuery中的URL参数获取
- JS基础_js编写位置
- mysql utf8转gbk cmd_修改xampp的mysql数据库utf8mb4为gbk以解决cmd内中文显示为问号
- FireFox下竟然对HTML注释与IE下有不同的解析
- 华为校招C++开发岗面试经验——软件开发工程师
- 构建Android Push Notification Service服务端及客户端
- xp系统从u盘启动计算机,电脑高手教你如何用u盘启动装xp系统!
- java实现小球的碰撞
- 编辑距离(Edit Distance) 一文读懂(Python实现)
- 计算机应用方面中文学术论文写作详细总结
- 广电时评 | 中央主流媒体盛赞爱奇艺短剧新气象
- 局域网arp攻击_如何排查ARP网络攻击
热门文章
- 计算机丢失cv210.dll,cv210.dll文件免费版
- python中怎么创建配置文件_在Python中创建游戏配置/选项(config.cfg)文件
- abap 给用户分配事物代码权限_【第五篇】SAP ABAP7.50 之用户接口
- python封装方法有几种_python之--------封装
- shader 编程入门(一)
- NRF52810能不能替代NRF52832
- 解题:HEOI 2016 求和
- [NOI2015]品酒大会
- 通过poi操作ppt中的图片
- Storm Trident API