Android-面试题

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()

你可能需要fragmentactivity共享事件。一个好办法是在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.csdn.net/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广播接收类:

[java]  view plain  copy
  1. private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver(){  
  2.         @Override  
  3.         public void onReceive(Context context, Intent intent) {  
  4.             String action = intent.getAction();  
  5.             if(action.equals(ACTION_NAME)){  
  6.                 Toast.makeText(Test.this"处理action名字相对应的广播"200);  
  7.             }  
  8.         }  
  9.           
  10.     };  


 

第二步:注册该广播:

[java]  view plain  copy
  1. public void registerBoradcastReceiver(){  
  2.         IntentFilter myIntentFilter = new IntentFilter();  
  3.         myIntentFilter.addAction(ACTION_NAME);  
  4.         //注册广播        
  5.         registerReceiver(mBroadcastReceiver, myIntentFilter);  
  6.     }  


 

第三步:触发响应

 

[java]  view plain  copy
  1. mBtnMsgEvent = new Button(this);  
  2.         mBtnMsgEvent.setText("发送广播");  
  3.         mBtnMsgEvent.setOnClickListener(new OnClickListener() {  
  4.             @Override  
  5.             public void onClick(View v) {  
  6.                 Intent mIntent = new Intent(ACTION_NAME);  
  7.                 mIntent.putExtra("yaner""发送广播,相当于在这里传送数据");  
  8.                   
  9.                 //发送广播  
  10.                 sendBroadcast(mIntent);  
  11.             }  
  12.         });  
  13.       



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值