Android 面试题.docx
- 文档编号:9291625
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:8
- 大小:19.68KB
Android 面试题.docx
《Android 面试题.docx》由会员分享,可在线阅读,更多相关《Android 面试题.docx(8页珍藏版)》请在冰豆网上搜索。
Android面试题
Android面试题
Java基础
1、写出遍历hashmap的两种方式
一种利用entrySet
Map map=newHashMap();
for(Entry entry:
map.entrySet()){
entry.getKey();
entry.getValue();
}
一种利用keySet的方式
Map map=newHashMap();
for(Stringkey:
map.keySet()){
map.get(key);
}
2、abstractclass和interface有什么区别
abstract可以修饰抽象方法,而一个类只要有一个抽象方法,就必须用abstract定义该类,即抽象类。
用interface修饰的类,里面的方法都是抽象方法,因此在定义接口的时候,可以直接不加那些修饰,系统会默认的添上去。
接口里面的字段都是公有常量,即publicstaticfinal修饰的字段。
3、“==”和equals方法究竟有什么区别?
对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;
如果作用于引用类型的变量,则比较的是所指向的对象的地址
对于equals方法,注意:
equals方法不能作用于基本数据类型的变量
如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;
诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。
android基础
1、如何将一个Activity设置成窗口的样式,当在一个activity中启动这个窗口activity的时候执行那些生命周期方法?
清单文件中Activitytheme设置为Theme.Dialog
activity只会支持onPause()方法而不会执行onStop方法
2、android线程间通信方式有哪几种?
1.runOnUiThread(Runnable) 在子线程中直接使用该方法,可以更新UI
2.View.postDelay(Runnable , long)/new Handler().postDelayed(Runnable) 在需要更新UI的地方调用该方法,Runnable对象的方法里,直接操作UI
3.使用Handler
4.使用AsyncTask
3、已知一个应用程序开启多个activity,如何安全退出这个应用程序?
在Application中持有一个全局的集合(List),进而在其onCreate()方法中,实例化该集合对象
在Activity的onCreate方法中,通过getApplication()获取到当前应用的Application对象,通过对象,就可以在获取到里面的全局的集合,就可以将当前的Activity加入到集合中去,每一个Activity的onCreate方法中,都执行相同的操作
通过上述的操作,我们就可以收集到所有已经被打开的Activity
在每一个Activity的onBackPressed()方法中,获取该全局的集合(List),遍历集合,获取每一个Activity,并且调用其finish()方法即可
4、应用程序在启动的需要用户登录,如何记住用户的登录信息,如果有保存用户名密码的功能,该如何操作,有哪些方式实现?
Sharedpreferences和外部的数据库
5、广播使用方式有哪些?
这些方式有什么异同?
请谈谈Android引入广播机制的用意。
在androidmainfest.xml中注册
name = "android.intent.action.PICK"/> 缺点: 常驻型,占资源比较大 registerReceiver(receiver,filter); 用意是方便各大组件中进行即时的相互通讯 6、什么是ANR,如何产生的,如何避免它? 在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR: Application Not Responding)对话框。 运行在主线程里的任何方法都尽可能少做事情,多用工作线程,耗时操作一定要在工作线程 7、什么情况下回产生ForceClose? 写出你遇到的几个导致其产生的异常? 导致出现Force Close的原因有很多,常见的有比如空指针啦,类没有找到啦,资源没找到,就连Android API使用的顺序错误也可能导致(比如setContentView()之前进行了findViewById()操作) 8、谈一下横竖屏切换时候activity的生命周期? 1、不设置Activity的android: configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次 2、设置Activity的android: configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次 3、设置Activity的android: configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法 9、当ListView带有网络图片怎么避免oom异常? 读取位图Bitmap时,分给虚拟机中的图片的堆栈大小只有8M,如果超出了,就会出现OutOfMemory异常 1.要及时回收Bitmap的内存 Bitmap类有一个方法recycle() System.gc(); 2. 捕获异常 3. 缓存通用的Bitmap对象 4. 压缩图片 10.介绍一下service,service作为一个后台程序,能否执行耗时操作? 不能,理论上四大组件都是运行在主线程上面的,主线程是不允许执行耗时操作的 11、谈谈android屏幕多分辨下的开发 在res目录下创建不同的layout文件夹 drawable-mdpi、drawable-xhdpi、drawable-xxhdpi 这三个主要是为了支持多分辨率 (1)drawable-mdpi里面存放低分辨率的图片,如WVGA (480x800),FWVGA (480x854) (2)drawable-xhdpi里面存放中等分辨率的图片,如 (1280x720) (3)drawable-xxhdpi里面存放高清分辨率的图片,如(1920x1080) 12.android: layout_gravity,android: gravity,android: padding,android: layout_margin之间的区别 gravity 属性是对该view 内容的限定 layout_gravity 是用来设置该view相对与起父view 的位置 padding 填充的意思,指的是view中的content与view边缘的距离 margin表示的是view的左边缘与parent view的左边缘的距离 margin一般用来描述控件间位置关系,而padding一般描述控件内容和控件的位置关系。 13.Intent的使用,能传递那些数据类型? 怎么传对象? Bitmap怎么传递 简单或基本数据类型 传递一个Bundle 传递Serializable对象 Parcelable对象 Intent Android中Intent传递类对象提供了两种方式 一种是 通过实现Serializable接口传递对象,一种是通过实现Parcelable接口传递对象。 要求被传递的对象必须实现上述2种接口中的一种才能通过Intent直接传递。 使用intent传递bitmap对象 存: i.putExtra("0", bitmap); 取: i = getIntent(); bitmap= i.getParcelableExtra("0"); android高级 1、如果后台的Activity由于某些原因被系统回收了,如何在系统回收的之前保存当前状态? Activity中提供了一个方法: onSavedInstanceState(Bundle obj).当系统销毁一个Activity时,会将Activity的状态信息已键值对形式存放在bundle对象中. onCreate方法的定义是"protected void onCreate (Bundle savedInstanceState) Activity还有个onRestoreInstanceState(Bundle outState)方法.这个方法的描述中也写到在Activity回复先前保存的状态时会被调用 2、请解释下Message、Handler、MessageQueue、Looper之间的关系。 Handler获取当前线程中的looper对象,looper用来从存放Message的MessageQueue中取出Message,再有Handler进行Message的分发和处理. Message Queue(消息队列): 用来存放通过Handler发布的消息,通常附属于某一个创建它的线程,可以通过Looper.myQueue()得到当前线程的消息队列 Handler: 可以发布或者处理一个消息或者操作一个Runnable,通过Handler发布消息,消息将只会发送到与它关联的消息队列,然也只能处理该消息队列中的消息 Looper: 是Handler和消息队列之间通讯桥梁,程序组件首先通过Handler把消息传递给Looper,Looper把消息放入队列。 Looper也把消息队列里的消息广播给所有的 Handler: Handler接受到消息后调用handleMessage进行处理 Message: 消息的类型,在Handler的handleMessage方法中得到单个的消息进行处理 3、请说明 synchronized 关键字的用法 方法前加上synchronized,这个方法即是同步的, 而使用synchronized(obj)和一对大括号包围住的代码块,则是同步块。 4、谈一下自定义控件的步骤和注意点,及怎么使用。 1. 写一个自定义控件类,这个类就是你的自定义控件的实现. 2. 在res/values目录下建立一个attrs.xml的文件,在这个文件中增加对控件的自定义属性的定义. 3. 使用带AttributeSet参数的类的构造函数,并在构造函数中将自定义控件类中变量与attrs.xml中的属性连接起来. 4. 在自定义控件类中使用这些已经连接的属性变量. 5. 将自定义的控件类定义到布局用的xml文件中去. 6. 在界面中生成此自定义控件类对象,就完成了自定义控件的创建和使用了. 5、在一个应用程序中,已知按顺序启动6个activity,编号按顺序分别是1,2,3,4,5,6,如何从第6个activity跳转到第2个activity,并清除中间的activity? 设置2的launchMode="singleTask,其它的launchMode都为默认的standard,然后设置2和6的android: taskAffinity为一样的值,这时,6跳转到2时,会清除掉中间的activity 6、如何保证service不被后台系统杀死,service杀死后如何重启。 Android开发的过程中,每次调用startService(Intent)的时候,都会调用该Service对象的onStartCommand(Intent,int,int)方法,然后在onStartCommand方法中做一些处理。 然后我们注意到这个函数有一个int的返回值 从Android官方文档中,我们知道onStartCommand有4种返回值: START_STICKY: 如果service进程被kill掉,保留service的状态为开始状态,但不保留递送的intent对象。 随后系统会尝试重新创建service,由于服务状态为开始状态,所以创建服务后一定会调用onStartCommand(Intent,int,int)方法。 如果在此期间没有任何启动命令被传递到service,那么参数Intent将为null。 START_NOT_STICKY: “非粘性的”。 使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统不会自动重启该服务。 START_REDELIVER_INTENT: 重传Intent。 使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统会自动重启该服务,并将Intent的值传入。 START_STICKY_COMPATIBILITY: START_STICKY的兼容版本,但不保证服务被kill后一定能重启。 现在的安卓手机,只要一长按home键,通常都会列出近期任务,这里可以干掉所有进程所以一直不断的在后台运行是不行的,但是你可以通常广播来激活你的service 7、请用代码来计算字符串“Iamgotoswimming”中每个字母的个数,并打印出来 publicstaticvoidmain(String[]args){ Stringstring="Iamgotoswimming"; Map for(inti=0;i charchars=string.charAt(i); intsum=search(string,chars); map.put(chars,sum); } System.out.println(map); } publicstaticintsearch(Stringsr,charar){ intcount=0; intnum=0; inttemp=0; while((sr.length()-temp)>=1){ num=sr.indexOf(ar,temp); if(num==-1){ temp=sr.length(); }else{ temp=num+1; count++; } } returncount; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 面试题 试题
![提示](https://static.bdocx.com/images/bang_tan.gif)