Android Service组件(1)
android service 和其他服务一样,并没有实际运行的界面,它运行在android 后台。一般通过service为应用程序提供服务(比如,从Internet下载文件,控制音乐播放器等)。Service的生命周期要比activity简单的多,它只有三个阶段(创建服务、开始服务、销毁服务)。下面通过具体事例讲解android的service组件。
1.创建android工程
在Eclipse中创建android工程 android_service_one
2.创建Service
在android工程中,创建包com.example.service,并添加方法MyService。该方法继承与Service。该类用来展示服务的三个生命周期。
package com.example.service; import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log; /*
*
*/
public class MyService extends Service { @Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
//第一次打开时调用
public void onCreate()
{
Log.d("MyService", "onCreate");
super.onCreate();
}
//停止时调用
public void onDestory()
{
Log.d("MySerVice", "onDestory");
super.onDestroy();
}
//开始时调用
public void onStart(Intent intent,int startId)
{
Log.d("MyService", "onStart");
super.onStart(intent, startId);
}
}
MyService
3.调用服务
在android 活动组件中调用刚刚建立的服务,调用之前需要在AndroidManifest.xml中对该服务进行配置。通过<service></service>来配置服务组件。
<service android:enabled="true" android:name="com.example.service.MyService"></service>
服务配置完成以后,可以调用该服务。服务与activity之间的交互依然通过Intent来进行通信。启动服务通过startservice(intent),停止服务通过stopservice(Intent intent)来完成。
Intent的声明:Intent Intent=new Intent(this,MyService.class);
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId())
{
case R.id.button1:
startService(serviceintent);
break;
case R.id.button2:
stopService(serviceintent);
break;
}
}
服务的停止与启动

4.Service与Activity绑定
Service与Activity绑定,当Activity启动时,服务自动启动。当Activity被销毁时,服务也被销毁。这里需要在MyService中重写 onBind、onRebind和onUnbind等几个方法。
package com.example.service; import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log; /*
*
*/
public class MyService extends Service { private MyBinder myBinder= new MyBinder(); @Override
//成功绑定时调用该方法
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
Log.d("MyService", "onBind");
return myBinder;
} //重新绑定时调用该方法
public void onRebind(Intent intent)
{
Log.d("MyService", "onRebind");
super.onRebind(intent);
} //解除绑定时调用该方法
public void onUnBind(Intent intent)
{
Log.d("MyService", "onUnbind");
super.onUnbind(intent);
}
//第一次打开时调用
public void onCreate()
{
Log.d("MyService", "onCreate");
super.onCreate();
}
//停止时调用
public void onDestory()
{
Log.d("MySerVice", "onDestory");
super.onDestroy();
}
//开始时调用
public void onStart(Intent intent,int startId)
{
Log.d("MyService", "onStart");
super.onStart(intent, startId);
} //绑定类
public class MyBinder extends Binder
{
//返回服务实例
public MyService getService()
{
return MyService.this;
}
}
}
MyService
5.调用服务
在Activity中声明服务变量 Myservice myService,和声明ServiceConnection连接变量。绑定变量调用bindService(serviceintent, conn, Context.BIND_AUTO_CREATE);
解除绑定调用,unbindService(ServiceConnection).
Intent serviceintent;
private MyService myService;
private ServiceConnection conn=new ServiceConnection() { @Override
public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub
myService=null;
Toast.makeText(MainActivity.this, "服务连接失败", Toast.LENGTH_LONG).show();
} @Override
public void onServiceConnected(ComponentName name, IBinder service) {
// TODO Auto-generated method stub
myService=((MyService.MyBinder)service).getService();
Toast.makeText(MainActivity.this, "服务连接成功", Toast.LENGTH_LONG).show();
}
};
ServiceConnection
Android Service组件(1)的更多相关文章
- Android组件系列----Android Service组件深入解析
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- Android Service组件在新进程绑定(bindService)过程
1.首先看两个样例 (1)进程内 Client端 public class CounterService extends Service implements ICounterService { .. ...
- Android 四大组件之再论service
service常见的有2种方式,本地service以及remote service. 这2种的生命周期,同activity的通信方式等,都不相同. 关于这2种service如何使用,这里不做介绍,只是 ...
- Android成长日记-Android四大组件之Service组件的学习
1.什么是Service? Service是Android四大组件中与Activity最相似的组件,它们都代表可执行的程序,Service与Activity的区别在于:Service一直在后台运行,它 ...
- Android四大组件之Service
Android四大组件之Service Android支持服务的概念,服务是在后台运行的组件,没有用户界面,Android服务可用有与活动独立的生命周期.Android支持两种类型的服务: 本地服务: ...
- Android 四大组件之service与Broadcast
Android 四大组件之一:service: Service有五个生命周期:onCreat,onStartCommand, onBind,onUnbind, onDestroy 主要有绑定和非绑定两 ...
- Android四大组件——Service
Service相关链接 Service初涉 Service进阶 Service精通 Service是Android系统中的一种组件,它跟Activity的级别差不多,但是它不能自己运行,只能后台运行, ...
- Android笔记二十七.Service组件入门(一).什么是Service?
转载请表明出处:http://blog.csdn.net/u012637501(嵌入式_小J的天空) 一.Service 1.Service简单介绍 Service为Android四大组件之中 ...
- Android四大组件之一Service介绍-android学习之旅(十二)
基本概念: service是android四大组件之一,运行在后台执行耗时操作,并不提供用户界面.其他组件如acticity可以通过startService启动该组件,也可以通过bindService ...
随机推荐
- Java - 泛型 ( Generic )
Java - 泛型 ( Generic ) > 泛型的特点 > 解决元素存储的安全性问题 > 解决获取数据元素时,需要类型强转的问题 ...
- javascript模式——Flyweight
Flyweight是一种共享数据内存的模式. Flyweight模式是将一些公有属性从个人中剔除,放在共享的对象当中. 下面以一个项目实例,通过不断的改进,以显示Flyweight模式的优点. 现在我 ...
- 枚举 enum
typedef enum : NSUInteger { <#MyEnumValueA#>, <#MyEnumValueB#>, <#MyEnumValueC#>, ...
- ThreadPoolExecutor(转)
让ThreadPoolExecutor的workQueue占满时自动阻塞submit()方法 By learnhard | 2015 年 09 月 04 日 0 Comment 转载请注明出处:htt ...
- 【典型错误】The type java.lang.Object cannot be resolved.
参考:http://blog.csdn.net/wo519074786/article/details/7697967 The type java.lang.Object cannot be reso ...
- Android 使用网络ADB调试.
前提: android Phone和PC在同一局域网内. android Phone 有虚拟终端(CM系统集成了ADB网络调试,比较赞.); 1.在android phone虚拟终端输入 stop a ...
- PHP 表单防止刷新提交的方法
当然,最直接的办法就是尽量不要使用自动提交的表单,然而,当我们需要网页主动post表单进行初始化时,就不得不面对这个问题了 -------------------------------------- ...
- python核心编程-第五章-个人笔记
1.用del删除对对象的引用 >>> a = 123 >>> a 123 >>> del a >>> a Traceback ( ...
- 命令行参数解析:getopt,getopt_long
#include <unistd.h> int getopt(int argc, char * const argv[], const char *optstring); extern c ...
- shell基础——二元比较操作符
二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别. 整数比较 -eq 等于,如:if [ "$a" -eq "$b" ]-ne 不等于,如:if [ ...