笔试面试-移动开发-Android 考点小结1

1.安卓的六大布局管理器是:

LinearLayout、FrameLayout、TableLayout、RelativeLayout、AbsoluteLayout、GridLayout

2.SharedPreferences保存文件的路径和扩展名是?

/data/data/package name/shared_prefs/   *.xml

SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置,比如Activity状态,Activity暂停时,将此activity的状态保存到SharedPereferences中;当Activity重载,系统回调方法onSaveInstanceState时,再从SharedPreferences中将值取出。以xml方式来保存 。

3.如果在Activity中对一些资源以及状态进行保存操作,最好是在生命周期的哪个函数中进行呢?

onPause:当系统即将开始恢复另一个Activity时被调用。这种方法通常用于将未保存的变更提交到持久数据、停止动画和其他可能消耗CPU的东西,等等。对于它所做的任何事情需要很快地完成,因为下一个Activity必须在它返回之后,才能继续执行。

4.对于一个已经存在的 SharedPreferences 对象 setting ,想向其中存入一个字符串 ”person”,”setting” 应该先调用什么方法?

先调用edit()。

SharedPreferences是安卓中的一个轻型的数据存储方式,它的本质是基于xml文件存储key-value键值对数据,通常适用于存储一些配置信息。

使用步骤

    1.通过Context上下文来过去到SharePreferences对象

    2.调用SharePreferences的edit()方法返回一个Editor对象

    3.在通过Editor的putXXX(key , value);方法设置数据

    4. 在通过Editor的  commit(); 方法 关闭对象

5.下列代码中哪个是隐式Intent的例子?

A.

Intent intent=new Intent(this,TestActivity.class);

intent.setData(Uri.parse(fileUrl));

startActivity(downloadIntent);

B.

Intent intent=new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_TEXT,textMessage);
intent.setType("text/plain");
startActivity(intent);

C.

Intent intent=new Intent();
intent.setClassName(context.getPackageName(),
”com.google.sample.TestActivity”);
startActivity(intent);

D.

Intent intent=new Intetn();
intent.setComponent(new ComponentName(context.getPackageName(),
"com.google.sample.TestActivity"));
startActivity(intent);

答案B是隐式的intent启动方式,因为隐式的启动方式不需要通过指明明确的activity路径,而是通过action与系统匹配合适的activity在启动,b选项就是通过这种方式来启动发送短信的activity.

显式启动 是明确指定了需要启动的Activity 或 service 的类名或包名。

隐式启动 不明确制定需要启动哪个Activity,而是通过设置action、data、 Category 等让系统来匹配出合适的目标

6.What is the difference between parcelable and serializable()

Parcels are light weght serialzable .It is perfred to use parcels for marsshaling objects into byte streams

Parcelable和Serializable 俩者异同

1、Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC;

2、在使用内存的时候,Parcelable比Serializable性能高,所以推荐使用Parcelable。

3、Parcelable不能使用在要将数据存储在磁盘上的情况,因为Parcelable不能很好的保证数据的持续性在外界有变化的情况下。尽管Serializable效率低点,但此时还是建议使用Serializable 。

7.在设计 android 应用时,常通过()的方式来定义视图组件。

使用XML布局文件定义视图组件;使用java代码定义视图组件

8.Intent可以传递哪些类型的数据
1. 8种基本数据类型及其数组 
2. String(String实现了 Serializable )/CharSequence实例类型的数据及其数组 
3. 实现了Parcelable的对象及其数组 
4. 实现了 Serializable 的对象及其数组 

9.Activty和Task的启动模式有哪些?

standard、singleTop、singleTask、singleInstance

10.Android应用中各Activity之间主要通过Intent相互传送信息

11.用于对单选框进行分组的方法是?

RadioGroup

1.单选框操作:单选框在Android里面随处可见,它是由两部分组成的,一部分是RadioGroup,一部分是RadioButton。一个RadioGroup里面是有多个RadioButton。每个RadioButton就是一个单选项,而控制的时候是控制RadioGroup。

3.复选框(checkBox):复选框就没有单选框那样有组的概念了,所以复选框的操作和单选框比起来就会比较复杂一点点,因为你要对每个复选框都进行一个事件响应。 

SeekBar是进度条

12.android中下列属于intent的作用是:

可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带

另外,

content provider:实现应用程序间的数据共享

service:是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失

activity:处理一个应用程序整体性的工作

13.我们都知道Hanlder是线程与Activity通信的桥梁,如果线程处理不当,你的机器就会变得越慢,那么在Activity结束时线程销毁过程中会涉及到的方法是:

onDestroy()

14.R.id.textview1(textview1为xml下TextView的id)类型是什么?

int

15.下面退出Activity错误的方法是

A.onstop()

B.system.exit()

C.finish()

D.抛异常强制退出

选A。onStop是生命周期,Activity退出时候自己调用的,不是用来结束Activity的方法。

16.在安卓应用程序开发中,可以通过()获得屏幕的属性,从而取得屏幕的宽度和高度()

getMetrics

17.下列不属于 service 生命周期的方法是 ____

onStop

由于Android Service的生命周期并不像Activity那么复杂,它只继承了onCreate(),onStart(),onDestroy()三个方法,当我们第一次启动Service时,先后调用了onCreate(),onStart()这两个方法,当停止Service时,则执行onDestroy()方法,需要注意的是,如果Service已经启动了,当我们再次启动Service时,不会在执行onCreate()方法,而是直接执行onStart()方法。

18.拥有设备管理器权限第三方APP可以远程擦除手机数据

19.使用Toast提示时,关于提示时长,下面说法正确的是( ).

A.显示时长默认只有2种设置
B.可以自定义显示时长
C.传入30时,提示会显示30秒钟
D.当自定义显示时长时,比如传入30,程序会抛出异常

选A.显示时长只有2种设置

Toast.makeText(this, str, Toast.LENGTH_LONG).show();

toast只能设置为 2s和3.5s ,其它的值都无效,API的文档虽然写的第三个参数是时间,但是Framework里作了重定义,限定了 2s和3.5s 这两个值 ,对应 Toast.LENGTH_SHORT和Toast.LENGTH_LONG,实现方式在NotificationManagerService.java的scheduleTimeoutLocked()这个函数里。

Toast的默认显示时间有两个,分别为Toast.LENGTH_SHORT和Toast.LENGTH_LONG

Toast只能使用short(大概2秒)和long(大概3.5秒)两种时长,传进去自定义数字并不会报错,只是实际不起作用,想要更丰富的提示推荐用Dialog

20.在同一线程中android.Handler和android.MessaegQueue的数量对应关系是怎样的?

N(Handler):1(MessageQueue)

在同一线程中肯定会调用一个 Loop.prepare() ,其中就生成一个 MessageQueue .

而代码中可以 new 出多个 Handler 发送各自的 Message 到这个 MessageQueue 中,最后调用 msg.target.dispatch 中这个target来捕获自己发送的massge,所以明显是 N 个 Handler 对应一个 MessageQueue.

21.在滴滴打车点击到支付宝支付,出现密码输入框,到此时相关的Activity会发生的生命周期回调依次为( )

滴滴支付Activity会调用onPause,因为支付宝支付不会完全覆盖滴滴支付Activity界面所以不会执行onStop。支付宝支付Activity会调用onCreate->onStart->onResume

支付宝支付Activity应该是Dialog。

总结:onPause->onCreate->onStart->onResume

22.下面哪一项不属于android的动画类型?

A.Tween
B.Alpha
C.Frame
D.Animation

pgeeKer

答案:D

解释:A、C很明显是android 动画的两种类型,而B属于Tween动画的一种。

Tween(渐变动画)补间动画 ,慢慢过渡,设置初值和末值,并用插值器来控制过渡包含:alpha和scale

Frame(画面转换动画)帧动画,一帧一帧的,包含:translate和rotate

Animation是动画效果,可以进行旋转,淡入淡出,移动,缩放等

23.android通过startService的方式开启服务,关于service生命周期的onCreate()和onStart() 说法正确的是:

当第一次启动的时候先后调用 onCreate()和 onStart()方法
如果 service 已经启动,只会执行 onStart()方法,不在执行 onCreate()方法

24.在Android中,如果需要对数据进行存储,则可以使用( )方式

    1、使用SharedPreferences存储数据

    2、文件存储数据

    3、SOLite数据库存储数据

    4、使用ContentProvider存储数据

    5、网络存储数据

25.Toast没有焦点,Toast不可以获得用户输入,Toast只能持续一段时间

26.属于android常用的跨进程通信工具有:

1.访问其他应用程序的Activity

2.Content Provider 

3.广播(Broadcast) 

4.AIDL服务

27.下列对android NDK的理解正确的是

1.NDK是一系列工具的集合
2.NDK 提供了一份稳定、功能有限的 API 头文件声明
3.使 “Java+C” 的开发方式终于转正,成为官方支持的开发方式
4.NDK 将是 Android 平台支持 C 开发的开端

28.Activity生命周期:

A 设置Activity的android:screenOrientation="portrait"属性时,无法切换横竖屏,因此不但不会重新调用各个生命周期方法,而且onConfigurationChanged()方法也不会执行。

B 未设置Activity的android:configChanges属性,API上这样说"the activity will be restarted if any of these configuration changes happen in the system.";如何配置有改变,就会重启activity

C launchMode为singleTask的时候,通过Intent启到一个Activity, 如果系统已经存在一个实例,系统就会将请求发送到这个实例上,但这个时候,系统就不会再调用通常情况下我们处理请求数据的onCreate方法,而是调用onNewIntent方法

D 用户正在操作某个Activity,这时如果其他应用程序需要内存。 此时的Activity是Foreground process,应该按照Empty process,Background process,Service process,Visible process顺序kill,最后才是前台进程。

29.下列关于数据持久化的描述正确的有

SQLite数据库文件可以保存在SD卡中
数据持久化就是将内存的数据保存到外存

andorid数据持久化的方法。    

    1.文件IO(直接写入SD卡文件);

    2.SQLite数据库;

    3.使用Preferences。 Preferences其实也属于文件IO;

    4.ContentProvider。作为android4大组件之一,其本身也是为了实现进程间数据共享。可能有的小伙伴会产生

疑惑,说这和持久化有毛的关系(我自己就是这样,因为基础不牢了。。)。数据持久化就是将内存中的数据模型转化

为存储模型。这样就明白了把。反观,ContentProvider,会发现其中好多方法和SQLite数据库操作方法有的一拼,heh

到这里 ,我们就明白了为什么把ContentProvider也是持久化了把。但是  ContentProvider的主要目的还是为了数据共享。

30.使用SimpleAdapter作为 ListView的适配器,行布局中支持下列哪些组件?

TextView,CompoundButton,ImageView

使用SimpleAdapter作为适配器时,支持三种类型的 View,而且是按照如下顺序进行匹配:

  1. 继承Checkable接口
  2.  TextView
  3.  ImageView

31.Android系统对下列哪些对象提供了资源池

A.Message提供了消息池,有静态方法Obtain从消息池中取对象;

B.Thread默认不提供资源池,除非使用线程池ThreadPool管理;

C.AsynTask是线程池改造的,池里 默认提供(核数+1)个线程进行并发操作,最大支持(核数  * 2 + 1)个线程,超过后会丢弃其他任务;

D.Looper,每个Looper创建时创建一个消息队列和线程对象,也不是资源池;

32.在滴滴打车点击到支付宝支付,出现密码输入框,到此时相关的Activity会发生的生命周期回调依次为()

onpause() oncreate() onstart() onresume()

猜你喜欢

转载自blog.csdn.net/qq_17753903/article/details/82714394