1.socket传递消息,容易断(基于Tcp传递):
实现断线重连机制,im消息基于的协议,XMPP MQTT
XMPP:基于xml的用于即时消息,以及在线探测,促进服务器之间的准即时操作;
MQTT:基于代理的“发布/订阅”模式的消息传输协议;是IBM开发的一种即时通信协议,,有可能成为物联网的重要组成部分;基于TCP/IP。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议。
2.自定义View:
1.自定义View的属性
2.在View的构造方法中获得我们自定义的属性
3.重写onMesure
4.重写onDraw
实现步骤:OnMeasure、OnLayout、OnDraw
3.重写DatePicker需要继承的类
FramLayout
4.String源码的equals的实现
public boolean equals(Object anObject)
{
if(this==anObject)return true;
if(anObject instanceof String)
{
String anotherString=(String)anObject;
int n=count;
if(n==anotherString.count)
{
char v1[]=value;
char v2[]=anotherString.value;
int i=offset;
int j=anotherString.offset;
while(n--!=0)
{
if(b1[i++]!=v2[j++])return false;
}
}
return true;
}
return false;
}
5.contentprovider是干什么的?
主要用于对外共享数据,也就是通过ContentProvider把应用中的数据共享给其他应用访问,其他应用可以通过ContentProvider对指定应用中的数据进行操作。ContentProvider分为系统的和自定义的,系统的也就是例如联系人,图片等数据。
内容提供者将一些特定的应用程序数据供给其它应用程序使用。数据可以存储于文件系统、SQLite数据库或其它方式。内容提供者继承于ContentProvider 基类,为其它应用程序取用和存储它管理的数据实现了一套标准方法。然而,应用程序并不直接调用这些方法,而是使用一个 ContentResolver 对象,调用它的方法作为替代。ContentResolver可以与任意内容提供者进行会话,与其合作来对所有相关交互通讯进行管理。
6.使用fragment
http://www.cnblogs.com/Gaojiecai/p/4084252.html
Fragment可以调用getActivity()方法很容易的得到它所在的activity的对象,然后就可以查找activity中的控件们(findViewById())
你可能需要fragment与activity共享事件。一个好办法是在fragment中定义一个回调接口,然后在activity中实现之。
7.andorid事件传递
在Android中,事件主要包括点按、长按、拖拽、滑动等,点按又包括单击和双击,另外还包括单指操作和多指操作。
-
dispatchTouchEvent
方法用于事件的分发,Android中所有的事件都必须经过这个方法的分发,然后决定是自身消费当前事件还是继续往下分发给子控件处理。返回true表示不继续分发,事件没有被消费。返回false则继续往下分发,如果是ViewGroup则分发给onInterceptTouchEvent进行判断是否拦截该事件。 -
onTouchEvent
方法用于事件的处理,返回true表示消费处理当前事件,返回false则不处理,交给子控件进行继续分发。 -
onInterceptTouchEvent
是ViewGroup中才有的方法,View中没有,它的作用是负责事件的拦截,返回true的时候表示拦截当前事件,不继续往下分发,交给自身的onTouchEvent进行处理。返回false则不拦截,继续往下传。这是ViewGroup特有的方法,因为ViewGroup中可能还有子View,而在Android中View中是不能再包含子View的(iOS可以)。
8.service的启动和其生命周期,如何使service长期运行,service的使用
http://blog.youkuaiyun.com/liuhe688/article/details/6874378
startService:模式下调用者与服务无必然联系,即使调用者结束了自己的生命周期,只要没有使用stopService方法停止这个服务,服务仍会运行;
bindService模式下服务是与调用者生死与共的,在绑定结束之后,一旦调用者被销毁,服务也就立即终止
onStart方法,为了兼容以前的程序,在onStartCommand方法中其实调用了onStart方法,不过我们最好是重写onStartCommand方法
在使用bindService绑定服务时,我们需要一个ServiceConnection代表与服务的连接,它只有两个方法,onServiceConnected和onServiceDisconnected,前者是在操作者在连接一个服务成功时被调用,而后者是在服务崩溃或被杀死导致的连接中断时被调用,而如果我们自己解除绑定时则不会被调用,所以我们这里只研究onServiceConnected这个方法。
onStartCommand方法,返回START_STICKY
9.intent的使用,action、categlory、date的作用
ntent存在以下几个属性:Component,Action,Category,Data,Type,Extra,Flag七个属性,其中Component属性用来指定需要启动的目标组件,Extra属性用于携带需要交换的数据。
10.mActiveView的大小、mScrapView的大小
mActiveView是一个数组,大小为屏幕上显示的item的个数
mScrapView为一个list,大小为已经创建的item当移除屏幕外的item
11.广播的使用
第一步:定义一个BroadcastReceiver广播接收类:
- private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver(){
- @Override
- public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
- if(action.equals(ACTION_NAME)){
- Toast.makeText(Test.this, "处理action名字相对应的广播", 200);
- }
- }
- };
第二步:注册该广播:
- public void registerBoradcastReceiver(){
- IntentFilter myIntentFilter = new IntentFilter();
- myIntentFilter.addAction(ACTION_NAME);
- //注册广播
- registerReceiver(mBroadcastReceiver, myIntentFilter);
- }
第三步:触发响应
- mBtnMsgEvent = new Button(this);
- mBtnMsgEvent.setText("发送广播");
- mBtnMsgEvent.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- Intent mIntent = new Intent(ACTION_NAME);
- mIntent.putExtra("yaner", "发送广播,相当于在这里传送数据");
- //发送广播
- sendBroadcast(mIntent);
- }
- });