昨天直接下课就回学校去了,所以没写这个。
昨天,今天,明天,这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).
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];
}
};
}
importcom.lovo.bean.PersonBean;
interfaceIMessage{
intgetFlag();
String getMessage();
PersonBeangetPerson();
}
..未完待续...
下来作业俩(黑名单、群发短信)
黑名单(拷的文件要放对包)
(后面将讲:)广播接受者。数据存取,Content Provider,多媒体应用,图像
下午暂时把黑名单做了,目前还有错,等会调试吧。
昨天课上我说可以同一台机子启动两个虚拟器实现相互通讯,老师说不可能和不晓得,然后我百度的那个方法自己又没弄出来,不了了之而罢。
额悲了个小剧,把老师代码和资料拷回来了,自己写的却忘拷了。。重要的注释啊啊
Just like in my dream!But our life more exciting!两个次元咱都活得很快乐