- 浏览: 548860 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
北月与南安:
哥哥不要秀我,答案是11.38,你算出来36.43,要求N个点 ...
平均距离 -
xiao_android_jun:
[color=red][ size=xx-small ...
Android 之 进程的概念介绍 -
明子健:
小伙子,很有前途哦
《将博客搬至CSDN》 -
1140566087:
dugujiujian 写道R.layout.simple_s ...
Android 之 下拉(Spinner) 组件示例 -
dugujiujian:
R.layout.simple_spinner_dropdow ...
Android 之 下拉(Spinner) 组件示例
使用Service 进行后台服务
1、Service 简介:
Service是Android系统中的四大组件之一,它是一种长生命周期的,没有可
视化界面,运行与后台的一种服务程序;
What is Service?
Service就是系统中的服务:
特点:
* 无法与用户直接进行交互;
* 必须由用户或者其他程序显示的来启动,优先级比较高;
* 比处于前台的应用优先级低,但是比后台的其他应用程序优先级高;
When?
当需要某些程序在后台运行的时候就使用Service;当Activity的生命周期结束的时候,
Service还是存在的;
2、Service的分类:本地service 和 远程service;
本地service:就是和当前的应用在同一个进程的service,彼此之间有共同的内存区域,
所以对于某些数据的共享特别的方便和简单;
远程service:主要牵扯到不同进程间的service访问。因为android的系统安全的原因导致
了我们在不同的进程间无法使用一般的方式共享数据。因此:android为我们提供了一个AIDL
(android interface description language)接口描述语言;
3、Service生命周期:
service的生命周期相比于Activity比较简单:
onCreate() ---> onStart() ---> onDestroy() 这三个方法;
注:在一次生命周期中,服务只能被创建一次,销毁一次,但是可以启动多次;
在Activity中与service有关的方法为:
情况一:
startService(Intent intent); 启动一个service
stopService(Intent intent); 停止一个service
情况二:当想使用service中的一些数据的或者访问其中的一些方法时:
bindService(Intent intent,ServiceConnection conn,int flags);
unbindService(ServiceConnection conn);
参数说明:
参1:跳转到service的intent;
参2:conn 代表一个与service连接状态的类,当连接service成功或失败
时会主动触发其(ServiceConnection)内部的onServiceConnected()或者
onServiceDisconnected()方法,如果想要访问service的数据,那么可以
在onServiceConnected()方法中进行;
小贴士:
使用服务绑定,当acitivity生命周期结束后service的生命周期也跟着结束,
他们的关系时同存亡的;
4、service的使用步骤:
①:创建一个类继承service这个类;
②:每一个组件都要在androidManifest.xml中进行注册;
③:在Activiy中进行启动、绑定、解绑、或者精致service;
案例:实现音乐后台播放;
Activity代码部分:
service代码部分:
package com.example.service;
service与activity进行数据交互:
1、Service 简介:
Service是Android系统中的四大组件之一,它是一种长生命周期的,没有可
视化界面,运行与后台的一种服务程序;
What is Service?
Service就是系统中的服务:
特点:
* 无法与用户直接进行交互;
* 必须由用户或者其他程序显示的来启动,优先级比较高;
* 比处于前台的应用优先级低,但是比后台的其他应用程序优先级高;
When?
当需要某些程序在后台运行的时候就使用Service;当Activity的生命周期结束的时候,
Service还是存在的;
2、Service的分类:本地service 和 远程service;
本地service:就是和当前的应用在同一个进程的service,彼此之间有共同的内存区域,
所以对于某些数据的共享特别的方便和简单;
远程service:主要牵扯到不同进程间的service访问。因为android的系统安全的原因导致
了我们在不同的进程间无法使用一般的方式共享数据。因此:android为我们提供了一个AIDL
(android interface description language)接口描述语言;
3、Service生命周期:
service的生命周期相比于Activity比较简单:
onCreate() ---> onStart() ---> onDestroy() 这三个方法;
注:在一次生命周期中,服务只能被创建一次,销毁一次,但是可以启动多次;
在Activity中与service有关的方法为:
情况一:
startService(Intent intent); 启动一个service
stopService(Intent intent); 停止一个service
情况二:当想使用service中的一些数据的或者访问其中的一些方法时:
bindService(Intent intent,ServiceConnection conn,int flags);
unbindService(ServiceConnection conn);
参数说明:
参1:跳转到service的intent;
参2:conn 代表一个与service连接状态的类,当连接service成功或失败
时会主动触发其(ServiceConnection)内部的onServiceConnected()或者
onServiceDisconnected()方法,如果想要访问service的数据,那么可以
在onServiceConnected()方法中进行;
小贴士:
使用服务绑定,当acitivity生命周期结束后service的生命周期也跟着结束,
他们的关系时同存亡的;
4、service的使用步骤:
①:创建一个类继承service这个类;
②:每一个组件都要在androidManifest.xml中进行注册;
③:在Activiy中进行启动、绑定、解绑、或者精致service;
案例:实现音乐后台播放;
Activity代码部分:
package com.example.service; import com.example.service.MyServiceForData.MyBinder; import android.app.Activity; import android.app.Service; import android.content.ComponentName; import android.content.Intent; import android.content.ServiceConnection; import android.os.Binder; import android.os.Bundle; import android.os.IBinder; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; /* service 使用 测试 */ public class MainActivity extends Activity { /* 生命组件对象 */ private Button startService; private Button stopService; private Button bindService; private Button unbindService; private Button getData; private Intent intent; private Intent intentForData; /* 声明一个Binder对象, 用于指引到service中onBind()返回的Binder对象 */ private MyBinder binder=null; /* 表示与service连接状态的类 :ServiceConnection */ public ServiceConnection conn = new ServiceConnection() { /* 表示连接service失败 */ public void onServiceDisconnected(ComponentName name) { } /* 表示连接service成功 */ /* 参1:连接到service组件的名称 ; 参2:在service中返回的IBinder对象 */ public void onServiceConnected(ComponentName name, IBinder service) { binder = (MyBinder) service; } }; /* 获得组件对象 */ protected void init(){ startService = (Button) findViewById(R.id.startService); stopService = (Button) findViewById(R.id.stopService); bindService = (Button) findViewById(R.id.bindService); unbindService= (Button) findViewById(R.id.unbindService); getData = (Button) findViewById(R.id.getData); } protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); /* 调用init()方法 , 初始化组件对象 */ init(); /* new一个Intent对象,实现service的调用 ,交互 */ intent = new Intent(MainActivity.this,MyService.class); intentForData = new Intent(MainActivity.this,MyServiceForData.class); /* 为startService写OnClickListener事件,开启service */ startService.setOnClickListener(new OnClickListener() { public void onClick(View v) { /* 启动服务 */ startService(intent); } }); /* stopService的OnClickListener事件,关闭service */ stopService.setOnClickListener(new OnClickListener() { public void onClick(View v) { /* 停止service */ stopService(intent); } }); /* 邦定service */ bindService.setOnClickListener(new OnClickListener() { public void onClick(View v) { /* 绑定service , bindService(); */ bindService(intentForData, conn, Service.BIND_AUTO_CREATE); } }); /* 解除绑定 */ unbindService.setOnClickListener(new OnClickListener() { public void onClick(View v) { /* 解绑service,unbindService() */ unbindService(conn); } }); /* 获取数据 */ getData.setOnClickListener(new OnClickListener() { /* 查看从service中或得到的数据 */ public void onClick(View v) { Toast.makeText(MainActivity.this, ""+binder.getCount(), 1000).show(); } }); } }
service代码部分:
package com.example.service;
import android.R; import android.app.Service; import android.content.Intent; import android.media.MediaPlayer; import android.os.IBinder; import android.util.Log; /* 创建自己的service , 要继承Service这个类; *//* 测试启动过程 */ public class MyService extends Service { /* 声明一个媒体对象 */ private MediaPlayer mediaPlayer ; /* 当用户显示的call startService之后首先调用 */ /* 创建service */ public void onCreate() { super.onCreate(); /* service创建的时候就获取MediaPlayer的对象 *//* 参1:上下文对象;参2:音乐文件资源ID*/ // mediaPlayer = MediaPlayer.create(this, 2); Log.i("MyService", "onCreate()..创建service.."); } /* 启动service */ public void onStart(Intent intent, int startId) { super.onStart(intent, startId); /* service启动的时候打开音乐 */ // mediaPlayer.start(); Log.i("MyService", "onStart()..开始service.."); } /* 停止服务 */ public void onDestroy() { super.onDestroy(); /* service停止的时候关闭音乐 */ // mediaPlayer.stop(); Log.i("MyService", "onDestroy()..停止service.."); } /* 绑定服务 */ public IBinder onBind(Intent intent) { return null; } }
service与activity进行数据交互:
package com.example.service; import android.app.Service; import android.content.Intent; import android.os.Binder; import android.os.IBinder; import android.util.Log; /* 测试访问service中的数据 *//* 案例:获取该服务中变量的值 */ /* 需要实现方法:onBind(); onUnbind(); onCreate(); onDestroy(); */ public class MyServiceForData extends Service { /* service中的变量 */ private int count = 0 ; private boolean flags; /* 创建MyBinder对象,用于onBind()方法返回一个Binder对象 */ MyBinder myBinder = new MyBinder(); /* 内部类:创建一个类MyBinder, 继承Binder */ public class MyBinder extends Binder{ /* 该内默认有个无参的构造方法 */ public MyBinder(){} /* 获取count的值 */ public int getCount(){ return count; } } /* 创建service */ public void onCreate() { super.onCreate(); Log.i("MyServiceForData", "onCreate()...创建service.."); /* service创建时,启动一个线程,用于完成对count值的改变 */ new Thread(){ /* run()方法里面程序就时现成执行的程序; *//* 该现成用于改变count的值 */ public void run(){ super.run(); while(!flags){ count++; } } }.start(); } /* 绑定service */ public IBinder onBind(Intent intent) { Log.i("MyServiceForData", "onBind()...绑定service.."); return myBinder; } /* 解绑service */ public boolean onUnbind(Intent intent) { Log.i("MyServiceForData", "onUnbind()...解绑service.."); return super.onUnbind(intent); } /* 停止service */ public void onDestroy() { super.onDestroy(); Log.i("MyServiceForData", "onDestroy()...停止service.."); } }
发表评论
-
Android 之 网络访问服务器,解析JSON数据
2014-03-28 22:50 3345提示:在访问网络,或者服务器的数据一定要注意 网络权限的声明: ... -
Android 之 AsyncTask 异步任务
2014-03-20 08:44 3483Android ... -
Android 之 Looper Handler Message 之间的关系
2014-03-19 10:16 3617Android 的消息 ... -
Android 之 多线程与Socket联合使用案例
2014-03-19 10:15 2610多线 ... -
Android 之 多线程和Socket套接字的使用介绍
2014-03-19 10:15 4824And ... -
Android 之 实现Runnable 接口与继承Thread的区别
2014-03-19 10:15 2159实现Runnable 接口 相 ... -
Android 之 GSON解析JSON数据
2014-03-19 10:14 4429... -
Android 之 使用Pull 解析xml文件
2014-03-18 21:04 1003/** * 使用Pull进行 xml 文件的解析 ... -
Android 之 使用DOM解析xml文件
2014-03-18 21:02 2700DOM 解析 xml 格式的文件 1、 xml简介:xml ... -
Android 之 百度API 密钥安全码生成
2014-03-04 22:29 2337近期要做个关于旅游助手的应用,开始接触百度API了。大神们 ... -
Android 之 EditText属性用法介绍
2014-01-06 23:49 3952EditText的属性 EditText继承关系:View-- ... -
Android 之 自定义适配器
2014-01-08 10:40 1710自定义适配器 1、实现 * 自定义适配器要继承 BaseA ... -
Android 之 自定义控件用法介绍
2014-01-08 10:40 1685自定义效果:实现:图片和文字混合 首先创建需要组合的子布局: ... -
Android 之 资源自适应与国际化
2014-01-08 10:40 3024<!-- 国际化和资源自适应 ... -
Android 之 Parcelable 序列化
2014-01-08 10:41 2660/* 序列化 * * 作 ... -
Android 之 五大布局案例
2014-01-08 10:41 21001、LinearLayout 线性布局例子: <Lin ... -
Android 之 通知Notification
2014-03-03 22:30 3828Notification 和 NotificationMana ... -
Android 之 手机全屏显示
2014-03-03 22:30 2291/* 1、全屏状态的显示 介绍:Android 中提供了Wi ... -
Android 之 拦截手机短信并自动转发
2014-03-03 22:29 5436拦截短信和发送短信都需要相关的权限: <?xml ve ... -
Android 之 将RAW资源文件写入SD卡工具类
2014-03-01 10:09 3523package com.sun.coptfiletosd; ...
相关推荐
NULL 博文链接:https://sunzone.iteye.com/blog/1998116
android学习之Service启动1
Android之Service实现比较大小
android,启动service,并且service把值传给Activity显示
本章内容服务(Service)是Android系统中4个应用程序组件之一(其他的组件详见3.2节的内容)。服务主要用于两个目的:后台运行和跨进程访问。通过启动一个服务,可以在不显示界面的前提下在后台运行指定的任务,这样...
Android Studio Service安卓在服务中如何弹出对话框Dialog
android service 简单实例代码 . binder继承一个接口,实现方法。
Android防止service多次执行startCommand 博客地址:http://blog.csdn.net/yuzhiqiang_1993/article/details/78211385
android系统级的服务包含了Android Service 和Native Service . Android Service 也称作 Java Service ,是用JAVA语言编写的,实现在框架层。 Native Service 也称作 System Service ,是用C++语言编写的,实现...
Android创建Service后台常驻服务并使用Broadcast通信,即基于Broadcast通信方式实现了一种Service Thread与Activity异步工作的方法。
android aidl service
Android Service之bound实现
Android之Service AIDL 远程服务 实现比较大小 先运行服务端 再运行客户端
android service服务器有关线程的问题
Android 用Service+OKHttp实现应用后台检测更新示例代码; Android 用Service+OKHttp实现应用后台检测更新示例代码 Android 用Service+OKHttp实现应用后台检测更新示例代码 Android 用Service+OKHttp实现应用后台...
服务(Service)是Android 系统中4 个应用程序组件之一(其他的组件详见3.2 节的内容)。服务主要 用于两个目的:后台运行和跨进程访问。通过启动一个服务,可以在不显示界面的前提下在后台运行指定 的任务,这样...
android之service.doc android之service.doc
Android Service之start实现
基于Service的android音乐播放器
Android之Web Service实现天气预报查询 利用Ksoap实现Web Service功能,大家自己练习的时候需要用到Ksoap2包,下载地址为 http://download.csdn.net/detail/hander_wei/5713765