Android面试题总结加强版(二)
http://blog.csdn.net/superjunjin/article/details/7855995
16.Android常用控件的信息
单选框(RadioButton与RadioGroup):
RadioGroup用于对单选框进行分组,相同组内的单选框只有一个单选框被选中。
事件:setOnCheckedChangeListener(),处理单选框被选择事件。把RadioGroup.OnCheckedChangeListener实例作为参数传入。
多选框(CheckBox):
每个多选框都是独立的,可以通过迭代所有的多选框,然后根据其状态是否被选中在获取其值。
事件:setOnCheckedChangeListener(),处理多选框被选择事件。把CheckBox.OnCheckedChangeListener()实例作为参数传入。
下拉列表框(Spinner):
Spinner.getItemAtPosition(Spinner.getSelectedItemPosition());获取下拉列表框的值。
事件:setOnItemSelectedListener(),处理下拉列表框被选择事件把Spinner.OnItemSelectedListener()实例作为参数传入。
拖动条(SeekBar):
SeekBar.getProgress()获取拖动条当前值
事件:setOnSeekBarChangeListener(),处理拖动条值变化事件,把SeekBar.OnSeekBarChangeListener实例作为参数传入。
菜单(Menu):
重写Activity的onCreatOptionMenu(Menu menu)方法,该方法用于创建选项菜单,当用户按下手机的"Menu"按钮时就会显示创建好的菜单,在onCreatOptionMenu(Menu Menu)方法内部可以调用Menu.add()方法实现菜单的添加。
重写Activity的onMenuItemSelected()方法,该方法用于处理菜单被选择事件。
进度对话框(ProgressDialog):
创建并显示一个进度对话框:ProgressDialog.show(ProgressDialogActivity.this,"请稍等","数据正在加载中....",true);
设置对话框的风格:setProgressStyle()
ProgressDialog.STYLE_SPINNER 旋转进度条风格(为默认风格)
ProgressDialog.STYLE_HORIZONTAL 横向进度条风格
(补充)
下面是各种常用控件的事件监听的使用
①EditText(编辑框)的事件监听---OnKeyListener
②RadioGroup、RadioButton(单选按钮)的事件监听---OnCheckedChangeListener
③CheckBox(多选按钮)的事件监听---OnCheckedChangeListener
④Spinner(下拉列表)的事件监听---OnItemSelectedListener
⑤Menu(菜单)的事件处理---onMenuItemSelected
⑥Dialog(对话框)的事件监听---DialogInterface.OnClickListener()
http://www.iteye.com/topic/1060815
17.请介绍下Android中常用的五种布局
Android布局是应用界面开发的重要一环,在Android中,共有五种布局方式,分别是:FrameLayout(帧布局),LinearLayout (线性布局),
AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)。
这个布局可以看成是墙脚堆东西,有一个四方的矩形的左上角墙脚,我们放了第一个东西,要再放一个,那就在放在原来放的位置的上面,这样依次的放,会盖住原来的东西。这个布局比较简单,也只能放一点比较简单的东西。
LinearLayout中有一个重要的属性 android:layout_weight="1",这个weight在垂直布局时,代表行距;水平的时候代表列宽;weight值越大就越大。
相对布局可以理解为某一个元素为参照物,来定位的布局方式。主要属性有:
android:layout_below="@id/aaa" 该元素在 id为aaa的下面
android:layout_toLeftOf="@id/bbb" 该元素在 id为bbb的左边
android:layout_alignParentLeft="true" 与父元素左对齐
android:layout_alignParentRight="true" 与父元素右对齐
表格布局类似Html里面的Table。每一个TableLayout里面有表格行TableRow,TableRow里面可以具体定义每一个元素,设定他的对齐方式 android:gravity="" 。
每一个布局都有自己适合的方式,另外,这五个布局元素可以相互嵌套应用,做出美观的界面。
18.如何启用Service,如何停用Service
Android中的服务和windows中的服务是类似的东西,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。服务的开发比较简单,如下:
public class SMSService extends Service {
第二步:在AndroidManifest.xml文件中的<application>节点里对服务进行配置:
<service android:name=".SMSService" />
onCreate() 该方法在服务被创建时调用,该方法只会被调用一次,无论调用多少次startService()或bindService()方法,服务也只被创建一次。
与采用Context.startService()方法启动服务有关的生命周期方法
与采用Context.bindService()方法启动服务有关的生命周期方法
onUnbind()只有采用Context.bindService()方法启动服务时才会回调该方法。该方法在调用者与服务解除绑定时被调用
- 采用Context. bindService()方法启动服务的代码如下:
- public class HelloActivity extends Activity {
- ServiceConnection conn = new ServiceConnection() {
- public void onServiceConnected(ComponentName name, IBinder service) {
- }
- public void onServiceDisconnected(ComponentName name) {
- }
- };
- @Override
- public void onCreate(Bundle savedInstanceState) {
- Button button =(Button) this.findViewById(R.id.button);
- button.setOnClickListener(new View.OnClickListener(){
- public void onClick(View v) {
- Intent intent = new Intent(HelloActivity.this, SMSService.class);
- bindService(intent, conn, Context.BIND_AUTO_CREATE);
- //unbindService(conn);//解除绑定
- }});
- }
- }
19.ListView的优化方案
21.设计模式和IoC(Inversion of Control 控制反转)
Android 框架魅力的源泉在于IoC,在开发Android 的过程中你会时刻感受到IoC 带来
的巨大方便,就拿Activity 来说,下面的函数是框架调用自动调用的:
protected void onCreate(Bundle savedInstanceState) ;
不是程序编写者主动去调用,反而是用户写的代码被框架调用,这也就反转
了!当然IoC 本身的内涵远远不止这些,但是从这个例子中也可以窥视出IoC
带来的巨大好处。此类的例子在Android 随处可见,例如说数据库的管理类,
例如说Android 中SAX 的Handler 的调用等。有时候,您甚至需要自己编写简
单的IoC 实现,上面展示的多线程现在就是一个说明
22.Android中的长度单位详解
也就是说,如果使用dp 和sp,系统会根据屏幕密度的变化自动进行转换。
px:表示屏幕实际的象素。例如,320*480 的屏幕在横向有320个象素,
in:表示英寸,是屏幕的物理尺寸。每英寸等于2.54 厘米。例如,形容
手机屏幕大小,经常说,3.2(英)寸、3.5(英)寸、4(英)寸就是指这个
单位。这些尺寸是屏幕的对角线长度。如果手机的屏幕是3.2 英寸,表示手机
23. 4种activity的启动模式
standard: 标准模式,一调用startActivity()方法就会产生一个新的实例。
singleTop: 如果已经有一个实例位于Activity栈的顶部时,就不产生新的实例,而只是调用Activity中的newInstance()方法。如果不位于栈顶,会产生一个新的实例。
singleTask: 会在一个新的task中产生这个实例,以后每次调用都会使用这个,不会去产生新的实例了。
singleInstance: 这个跟singleTask基本上是一样,只有一个区别:在这个模式下的Activity实例所处的task中,只能有这个activity实例,不能有其他的实例。
24.什么是ANR 如何避免它?
ANR:Application Not Responding。
在Android中,活动管理器和窗口管理器这两个系统服务负责监视应用程序的响应。当出现下列情况时,Android就会显示ANR对话框了:
用户对应用程序的操作(如输入事件,按键、触摸屏事件)在5秒内无响应
广播接受器(BroadcastReceiver)在10秒内仍未执行完毕
Android应用程序完全运行在一个独立的线程中(例如main)。这就意味着,任何在主线程中运行的,需要消耗大量时间的操作都会引发ANR。因为此时,你的应用程序已经没有机会去响应输入事件和意向广播(Intent broadcast)。
避免方法:Activity应该在它的关键生命周期方法(如 onCreate()和onResume())里尽可能少的去做创建操作,
潜在的耗时操作。例如网络或数据库操作,或者高耗时的计算如改变位图尺寸,应该在子线程里(或者异步方式)来完成。
主线程应该为子线程提供一个Handler,以便完成时能够提交给主线程。
25.Android Intent的使用
在一个Android应用中,主要是由一些组件组成,(Activity,Service,ContentProvider,etc.)在这些组件之间的通讯中,由Intent协助完成。
正如网上一些人解析所说,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。Intent在这里起着实现调用者与被调用者之间的解耦作用。
Intent传递过程中,要找到目标消费者(另一个Activity,IntentReceiver或Service),也就是Intent的响应者,有两种方法来匹配:
1,显示匹配(Explicit):
- public TestB extents Activity
- {
- .........
- };
- public class Test extends Activity
- {
- ......
- public void switchActivity()
- {
- Intent i = new Intent(Test.this, TestB.class);
- this.startActivity(i);
- }
- }
代码简洁明了,执行了switchActivity()函数,就会马上跳转到名为TestB的Activity中。
2,隐式匹配(Implicit):
隐式匹配,首先要匹配Intent的几项值:Action, Category, Data/Type,Component
如果填写了Componet就是上例中的Test.class)这就形成了显示匹配。所以此部分只讲前几种匹配。匹配规则为最大匹配规则,
1,如果你填写了Action,如果有一个程序的Manifest.xml中的某一个Activity的IntentFilter段中定义了包含了相同的Action那么这个Intent就与这个目标Action匹配,如果这个Filter段中没有定义Type,Category,那么这个Activity就匹配了。但是如果手机中有两个以上的程序匹配,那么就会弹出一个对话可框来提示说明。
Action的值在Android中有很多预定义,如果你想直接转到你自己定义的Intent接收者,你可以在接收者的IntentFilter中加入一个自定义的Action值(同时要设定Category值为"android.intent.category.DEFAULT"),在你的Intent中设定该值为Intent的Action,就直接能跳转到你自己的Intent接收者中。因为这个Action在系统中是唯一的。
2,data/type,你可以用Uri来做为data,比如Uri uri = Uri.parse(http://www.google.com );
Intent i = new Intent(Intent.ACTION_VIEW,uri);手机的Intent分发过程中,会根据http://www.google.com 的scheme判断出数据类型type
手机的Brower则能匹配它,在Brower的Manifest.xml中的IntenFilter中首先有ACTION_VIEW Action,也能处理http:的type,
3,至于分类Category,一般不要去在Intent中设置它,如果你写Intent的接收者,就在Manifest.xml的Activity的IntentFilter中包含android.category.DEFAULT,这样所有不设置Category(Intent.addCategory(String c);)的Intent都会与这个Category匹配。
4,extras(附加信息),是其它所有附加信息的集合。使用extras可以为组件提供扩展信息,比如,如果要执行“发送电子邮件”这个动作,可以将电子邮件的标题、正文等保存在extras里,传给电子邮件发送组件。
Android面试题总结加强版(二)相关推荐
- Android之面试题总结加强版(一)
转载:http://blog.csdn.net/itachi85/article/details/7426451 自己总结的最强android应用面试题集 1.activity的生命周期. 方法 描述 ...
- android面试题总结加强版
http://blog.csdn.net/itachi85/article/details/7426451
- Android 面试题笔记(一)
每日更新每日学习面试笔记,来自https://github.com/Moosphan/Android-Daily-Interview/ 1.自定义 Handler 时如何有效地避免内存泄漏问题? 问题 ...
- Android面试题(二)Android高级/资深面试题
Android面试题(一)Java基础 Android面试题(二)Android基础 Android面试题(三)Java虚拟机 Android面试题(四)设计模式 Android面试题(五)数据结构/ ...
- android面试题总结加强
在加强版的基础上又再加强的android应用面试题集 有些补充略显臃肿,只为学习 1.activity的生命周期. 方法 描述 可被杀死 下一个 onCreate() 在activity第一次被创建的 ...
- android面试题大全 android面试题总结
android面试题大全 android面试题总结 1.Android系统的架构 Android系统架构之应用程序 Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端 ...
- Android 基本面试题
Android 基本面试题 一.java 核心思想 1.八种基本数据类型和封装类 基本类型 大小(字节) byte 1 short 2 int 4 long 8 float 4 double 8 bo ...
- 【Android面试】Android面试题集锦 (陆续更新)(最新2012-6-18)
1.android开发新浪面试题[开发者必看哦] 下载地址 http://www.eoeandroid.com/thread-177885-1-1.html 2.华为关于android笔试题案例解析 ...
- 【Android面试】Android面试题集锦 (陆续更新)
[Android面试]Android面试题集锦 (陆续更新) 分类: [杂七杂八]2011-05-11 17:58 2064人阅读 评论(0) 收藏 举报 一些常见的Android面试基础题做下总结, ...
最新文章
- JavaScript初学者编程题(11)
- 鹅厂2020暑期实习第二次一面
- ngnix mysql 缓存清除_利用Proxy Cache使Nginx对静态资源进行缓存
- 巨头扎堆“当农民”-丰收节交易会·万祥军:谋定生机
- 每天一道LeetCode-----最长无重复子串
- python 实数如何取整_从面试官角度提问:15道硬核Python面试题,论面霸是如何炼成的...
- Linux内核路由表介绍及相关函数
- JAVA入门级教学之(局部内部类)
- STM32F103单片机J-TAG引脚功能关闭方法
- 计算机算法设计与分析 数字三角形
- vue前端开发框架、常用vue组件库及简单示例
- 激光导航技术是如何实现的?
- idm由于法律原因无法下载怎么办?
- 2021-07-01 <1000+常用Python库>
- 砸盘、销号、解散社群,Merlin Lab“跑路三连”暴露了DeFi哪些问题?
- 深度学习之文本摘要自动生成
- 有限差分法(Finite Difference Method)解方程:边界和内部结点的控制方程
- 游戏设计的艺术:一本透镜的书——第十五章 其中一种体验是故事
- WebSocket之仿QQWeb即时聊天系统(下)
- Keil MDK5.37以上版本自行添加AC5(ARMCC)编译器的方法
热门文章
- 天呐!你知道MSBuild都干了些什么
- windows 服务实现定时任务调度
- [Abp 源码分析]后台作业与后台工作者
- ASP.NET Core ActionFilter引发的一个EF异常
- 你知道这个C#开发跨平台APP的样例介绍开源项目吗?
- 为什么我们总是「习惯性辩解」?
- UnitTest in .NET(Part 5)
- 「PowerBI」分析服务多维数据结构重回关系数据库的一大绝招
- .NET Core 3.0之深入源码理解Configuration(一)
- ASP.NET Core 3.0 项目开始“瘦身”