- 浏览: 334084 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
努力吧飞翔:
...
[ExtJS] MVC应用架构示例 -
coolnight:
[Maven]Nexus 安装与配置 -
Kevin_jiang2011:
官网的文档写的不好。 简单的执行命令,又要重新下载一个ecli ...
jBPM5 入门 -
litterdeer:
好东西....
[ExtJS] MVC应用架构示例 -
basherone:
可以用,谢谢了
[ExtJS] MVC应用架构示例
后台服务:运行在后台,一般没有UI.
1.创建一个简单的服务
a.继承 android.app.Service
b.配置 服务
示例:
2.服务接口方法
onCreate():void //只调用一次,生命周期回调
onDestroy():void //服务销毁前调用
onLowMemory():void
onBind(Intent intent):IBinder //提供接口为外部应用服务
onReBind(Intent intent):void
onUnBind(Intent intent):boolean
onStart(Intent intent, int startId):void
stopSelf():void
stopSelf(int startId):void
stopSelfResult(int startId):boolean
setForeground(boolean isForeground):void
onConfigurationChanged(Configuration newConfiguration):void //重新配置服务
getApplication():Application //获取实现服务的应用
3.
一个服务可以是本地服务或远程服务,但不能两种类型都是.
本地服务:通过 Context.startService() 启动.
远程服务:通过 Context.bindService() 启动.
4.
本地服务
5.
远程服务(RPC)
a.使用AIDL定义一个服务
b.继承服务,实现接口
c.配置服务
使用远程服务
a.绑定服务
e.处理响应
AIDL 定义一个服务
IStockQuoteService.aidl
eclipse adt 自动编译 *.aidl 为 *.java
IStockQuoteService.java
实现定义的 AIDL 接口
StockQuoteService.java
暴露服务:
调用服务:
a.创建一个新项目 ServiceClient
b.创建一个新包名 com.syh
c.复制 IIStockQuoteService.aidl 文件到 com.syh 中.
d.调用 Context.bindService();
e.通过 ServiceConnection 的 onServiceConnected 调用远程方法
6.复杂类型打包
Parcelable
Persion.java
项目源码:
1.创建一个简单的服务
a.继承 android.app.Service
b.配置 服务
示例:
public class TestService extends Service{ @override public void onCreate(){ super.onCreate(); Log.d(TAG, "create testservice..."); } @override public IBinder onBind(Intent intent){ Log.d(TAG, "service bind to ..."); return null; } } AndroidManifest.xml<service name="package-path.TestService"></service>
2.服务接口方法
onCreate():void //只调用一次,生命周期回调
onDestroy():void //服务销毁前调用
onLowMemory():void
onBind(Intent intent):IBinder //提供接口为外部应用服务
onReBind(Intent intent):void
onUnBind(Intent intent):boolean
onStart(Intent intent, int startId):void
stopSelf():void
stopSelf(int startId):void
stopSelfResult(int startId):boolean
setForeground(boolean isForeground):void
onConfigurationChanged(Configuration newConfiguration):void //重新配置服务
getApplication():Application //获取实现服务的应用
3.
一个服务可以是本地服务或远程服务,但不能两种类型都是.
本地服务:通过 Context.startService() 启动.
远程服务:通过 Context.bindService() 启动.
4.
本地服务
5.
远程服务(RPC)
a.使用AIDL定义一个服务
b.继承服务,实现接口
c.配置服务
使用远程服务
a.绑定服务
e.处理响应
AIDL 定义一个服务
IStockQuoteService.aidl
package com.syh; interface IStockQuoteService{ double getQuote(String ticker); }
eclipse adt 自动编译 *.aidl 为 *.java
IStockQuoteService.java
package com.syh; import java.lang.String; import android.os.*; public interface IStockQuoteService extends android.os.IInterface{ public static abstract class Stub extends android.os.Binder implements IStockQuoteService{ private static final String DESCRIPTOR = "com.syh.IStockQuoteService"; public Stub(){ this.attachInterface(this, DESCRIPTOR); } ... } .... public double getQuote(String ticker) throws android.os.RemoteException{ ... } }
实现定义的 AIDL 接口
StockQuoteService.java
package com.syh; import ... public class StockQuoteService extends Service{ private NotificationManager notificationManager = null; public class StockQuoteServiceImpl extends IStockQuoteService.Stub { @override public double getQuote(String ticker){ return 2.0; } } @override public IBinder onBind(Intent intent){ return new StockQuoteServiceImpl (); } }
暴露服务:
<service name="com.syh.StockQuoteService"> <intent-filter> <action name="com.syh.IStockQuoteService" /> </intent-filter> </service>
调用服务:
a.创建一个新项目 ServiceClient
b.创建一个新包名 com.syh
c.复制 IIStockQuoteService.aidl 文件到 com.syh 中.
d.调用 Context.bindService();
e.通过 ServiceConnection 的 onServiceConnected 调用远程方法
public class MainActiviy extends Activity{ private IStockQuoteService service = null; @override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); Button btn = (Button)super.findViewById(R.id.bindBtn); btn.setOnClickListener(new OnClickListener(){ @override public void onClick(View view){ this.bindService(new Intent(IStockQuoteService.class.getName(), sc, BIND_AUTO_CREATE)); } }); } private ServiceConnection sc = new ServiceConnection(){ @override public void onServiceConnected(ComponentName cname, IBinder service){ this.service = IStockQuoteService.Stub.asInterface(service); double val = 0.0; try{ val = this.service.getQuote("syh"); }catch(RemoteException e){ Log.e(TAG, e.getMessage(), e); } } @override public void onServiceDisConnected(ComponentName cname){ } }; }
6.复杂类型打包
Parcelable
Persion.java
public class Person extends Object implements Parcelable{ private int age = 0; private String name = ""; public static final Parcelable.Creator<Person> CREATOR = new Parcelable.Creator<Person>(){ public Person createFormParcel(Parcel in){ return new Person(in); } public Person[] newArray(int size){ return new Person[size]; } }; public Person(){} private Persion(Parcel in){ readFormParcel(in); } @override public int describeContents(){ return 0; } @override public void writeToParcel(Parcel out, int flags){ out.writeString(name); out.writeInt(age); } @override public void readFromRarcel(Parcel in){ name = in.readString(); age = in.readInt(); } //-- getter/setter ... }
项目源码:
- rpc.zip (101 KB)
- 下载次数: 125
发表评论
-
使用phantom-limb 模拟Touch 事件
2012-04-14 22:15 20551 下载 phantom-limb.js 2. 使用 2. ... -
读取本地私有文件
2009-11-08 12:58 2293package tl.android.utils; ... -
Android 文件搜索引擎
2009-11-08 02:44 0手机文件管理: 1.文件备份 2.创建文件/文件夹 3.批量复 ... -
Android HTTP 服务
2009-11-06 21:23 6852使用 HTTP 服务: 1. Apache HttpClin ... -
Android 2D 动画
2009-11-05 22:08 16841.帧动画 AnimationDrawable 2.布局动 ... -
Android Intents
2009-11-05 14:37 2097Android Intent 是 Android 进 ... -
Android 自定义ContentProvider
2009-11-04 00:30 4882自定义 ContentProvider ----------- ... -
Android 安全模型
2009-10-30 20:09 2553Android 安全模型包括两个方面:部署和运行. 部署应用 ... -
Intent 初探
2009-10-29 18:36 1103Intent package android.conte ... -
Android 示例之 notepad
2009-10-29 17:50 3536AndroidManifest.xml <?xml ... -
Android 用户界面(User Interface)
2009-10-28 09:57 1731View 基类: 视图对象在屏幕特定矩形区域处理自己的尺寸,布 ... -
Android 应用程序开发基础
2009-10-28 08:42 12761. 每一个应用程序运行在一个独立的进程,每一个进程运行在一个 ... -
android emulator( android模拟器)
2009-10-24 18:28 3993Android Emulator ============== ... -
android AVDs mksdcard dx工具介绍
2009-10-24 01:30 4596引用android 工具是一个脚本文件,用于创建,管理AVDs ... -
adb (Android Debug Bridge) Android 调试桥
2009-10-24 00:47 3935Android Debug Bridge (adb) 是一个通 ... -
aapt 工具( Android Asset Packaging Tool )
2009-10-23 23:33 7686aapt (Android Asset Packaging T ... -
AIDL (Android Interface Definition Language) Android 接口定义语言
2009-10-23 10:29 3209AIDL (Android Interface Definit ... -
Dedexer:Dex文件反编译工具介绍
2009-10-23 05:47 11588Dedexer 项目主页: http://de ... -
Android 开发环境配置
2009-10-21 06:05 1401准备: 1.下载JDK1.6 2.下载Android SDK ...
相关推荐
适合在 Delphi XE8一下 开发android后台服务例程
android后台服务自启动
android后台服务定位 设置为开机自动启动
Android后台服务,Android后台服务
了解Service的原理和用途 掌握进程内服务的管理方法 掌握服务的隐式启动和显式启动方法 了解线程的启动、挂起和停止方法 了解跨线程的界面更新方法 掌握跨进程服务的绑定和调用方法
android后台服务运行保持不被干掉。.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
第七章android后台服务_电话服务_SMS_MMS.docx
使用android IntentService后台截屏并且实现悬浮窗口动态显示
安卓Android后台保活服务Demo,多厂商免杀,适配各大手机品牌的内存清理白名单。多进程互相唤醒保活。
android 后台服务运行,保持不被干掉
android后台服务代码c#,与android客户端通信,客户端下载地址:http://download.csdn.net/detail/generallizhong/9817304
android后台服务运行保持不被干掉。.rar
第七章android后台服务电话服务SMSMMS.docx
android 后台监听按键事件方法及demoandroid 后台监听按键事件方法及demo
第七章android后台服务_电话服务_SMS_MMS.pdf
android后台服务小程序,主要实现service功能
第七章android后台服务_电话服务_SMS_MMS-43页.pdf