2013年6月24日 20:58:26

昨天直接下课就回学校去了,所以没写这个。

昨天,今天,明天,这3天的话对于我来说真是好多个辛亏啊~呵呵,生活有时候就是这么顺心的事,不过好多时候你没去用心感谢罢了。辛苦我昨天给老爸就打了电话,不然他今天明天没空的,而明天就得搬完所有东西离校了~(也就是毕业了呗);辛亏今早我自己动身把离校该办的业务去搞定了,不然就委托人家,怕都不能顺利办完而安然离校;辛亏本来应该的明天上课的,我不是电脑上的QQ没看到群消息,然后今天上午把事搞定就跑回培训这边宿舍而听到了消息,不然明天傻乎乎的不是就可能白跑一趟了?辛亏现在坐在自己电脑前敲了代码,不然又是闲状态,即使看也了不了几页书啊;辛亏昨天就把行李交老爸运回家了,不然今天明天肯定一团乱;嗯辛亏回学校了,收刮了点同学不要的东西;辛亏明天培训这边会停电,然后我明天就不用预打算的请假了;辛亏这几天下雨阴天凉快啊,不然是个人都不好受;辛亏我明天还是能自己亲自去领毕业证,不然拖着的话肯定是各种麻烦;还有啥啥辛亏就不想也不写了,知足就好,知道就行,想多了是浪费时间哦。

 

0623
新知识www+h模式。。what,why,how

Android中的Service,与Activity类似,无用户界面,生命周期
创建和配置Service:
必须实现onBind()方法
onCreate()第一次启动才调
onStartCommand():被启动时回调,可接受intent的数据
onUnbind():Service被断开连接时回调该方法
onDestroy():销毁时调(传intent,用stopService(intent);)
要配置xml里注册service:name,intent-filter
启动俩方式:
①startService不关联访问者,先new intent,setAction,startService(intent);
②和bindService(3参数)绑定访问者,可通信。2参connection:需实现ServiceConnection接口的类
unbindService关闭,

练习,创个登陆。在service里判断账户是否正确,然后返回(感觉好绕!么)
自1:load界面,实现监听事件,确认按钮里:
bindService(service, conn, flags):
service是new的intent;包含需要传的数据【Connection:连接;Bind:绑定】
conn是new MyServiceConnection():是自建类implements ServiceConnection,onServiceConnected里写MyBinder binder = (MyBinder) service;而MyBinder又是自写extends Binder,里面个成员变量String data,并set/get方法。
下面回到Load界面的bindService,第三个参数flags常量: BIND_AUTO_CREATE表示自动添加的标号

service的生命周期:startService()方法:onCreate()-》onStart()-》运行...被通知停止-》onDestory()关闭;
bindService()方法:onCreate()-》onBind()-》客户与Service交互..-》onUnBind()-》onDestory()关闭;
要知道:若已start服务,再绑,再解绑,再绑,有方法onReBind()的,可把onUnbind返回类型改为true以实现重新绑定;

系统服务:采用Ontext的getSystemService(String name)
电话管理器。eclipse里DDMS里Emulator Control:模拟打电话发短信等

黑名单:两个应用程序用:远程方法调用(JAVA里是rmi技术)
AIDL服务:借口定义语言
,有个后缀为aidl的文件。。。(我密西去了,,以下暂为自看电子书)。
 先定义个远程调用接口,然后为该借口提供一个实现类,客户端访问Service时,android并不是直接返回Service对象给客户端,Service只是将一个回调对象(IBinder对象)通过onBind()方法返回给客户端,一次Android的AIDL远程接口的实现类就是那个IBinder实现类;AIDL的语法与java接口很类似,但他的源代码必须以.aidl结尾,接口中用到的数据类型除了基本类型、String、List、Map、CharSequence之外,其他全需要导包;用ADT工具会自动为该AIDL接口生成实现。会在gen目录下自动生成个java接口,内部类Stub实现了IBinder和自写名的两个接口,这个Stub类将会作为远程Service的回调类---它实现了IBinder接口 ,因此可作为Service的onBind()方法的返回值。..

将接口暴露给客户端
将定义好AIDL接口之后,接下来就可定义一个Service实现类,该Service的onBind()方法所返回的IBinder对象应该是ADT所生成的IMessage.Stub的子类的实例。至于其他部分,则与开发本地Service一样。
.客户端访问AIDLService
AIDL接口定义了两个进程之间的通信接口,因此不仅服务器端需要AIDL接口,客户端同样需要前面定义的AIDL接口,因此开发客户端的第一步就是将Service端的AIDL接口文件复制到客户端应用中。
接下来的开发和之前绑定本地Service的区别不大,唯一不同就是ServiceConnection并不能直接获取Service的onBind()方法所返回的对象,它只能返回onBind()方法所返回的对象的代理,因此在ServiceConection的onServiceConnected方法中需要通过如下代码进行处理:
 IMessage.Stub.asInterface(binder).

传递复杂数据的 AIDL 服务
如果需要使用自定义类型,那么该类必须实现 Parcelable 接口,同时实现接口要求实现的所有方法,并且要求在实现类中定义一个 CREATOR ,类型为 Parcelable.Creator 的静态 Field 。除此之外,还要求使用 AIDL 代码来定义这些自定义类型。

  package com.lovo.bean;

  parcelablePersonBean;

public class PersonBean implements Parcelable{
public int describeContents() {
	return 0;
}
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(id);
dest.writeString(name);
dest.writeString(sex);
}
public static final Parcelable.Creator<PersonBean> CREATOR = new Parcelable.Creator<PersonBean>() {
public PersonBean createFromParcel(Parcel source) {
	return new PersonBean();
}
public PersonBean[] newArray(int size) {
	return new PersonBean[size];
}
};
}
aidl 接口定义中需要导入自定义类的包。

importcom.lovo.bean.PersonBean;

interfaceIMessage{

  intgetFlag();

  String getMessage();

  PersonBeangetPerson();

}

接下来在客户端中使用 ServiceConnection 类的回调方法就可以接收到远程的对象并调用其方法

..未完待续...

 


下来作业俩(黑名单、群发短信)
黑名单(拷的文件要放对包)

(后面将讲:)广播接受者。数据存取,Content Provider,多媒体应用,图像

 

下午暂时把黑名单做了,目前还有错,等会调试吧。

昨天课上我说可以同一台机子启动两个虚拟器实现相互通讯,老师说不可能和不晓得,然后我百度的那个方法自己又没弄出来,不了了之而罢。

额悲了个小剧,把老师代码和资料拷回来了,自己写的却忘拷了。。重要的注释啊啊


 Just like in my dream!But our life more exciting!两个次元咱都活得很快乐

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值