搜档网
当前位置:搜档网 › 面试必备之Android面试常问基础知识点

面试必备之Android面试常问基础知识点

面试必备之Android面试常问基础知识点
面试必备之Android面试常问基础知识点

Android面试常问基础知识点

1、四大组件是什么

1)Activity:用户可操作的可视化界面,为用户提供一个完成操作指令的窗口。一个Activity通常是一个单独的屏幕,Activity通过Intent来进行通信。Android中会维持一个Activity Stack,当一个新Activity创建时,它就会放到栈顶,这个Activity就处于运行状态。

2)Service:服务,运行在手机后台,适合执行不需和用户交互且还需长期运行的任务。

3)ContentProvider:内容提供者,使一个应用程序的指定数据集提供给其他应用程序,其他应用可通过ContentResolver类从该内容提供者中获取或存入数据。它提供了一种跨进程数据共享的方式,当数据被修改后,ContentResolver接口的notifyChange函数通知那些注册监控特定URI的ContentObserver对象。

如果ContentProvider和调用者在同一进程中,ContentProvider的方法

(query/insert/update/delete等)和调用者在同一线程中;如果ContentProvider和调用者不在同一进程,ContentProvider方法会运行在它自身进程的一个Binder线程中。

4)Broadcast Receiver: 广播接收者,运用在应用程序间传输信息,可以使用广播接收器来让应用对一个外部事件做出响应。

2、四大组件的生命周期和简单用法

1)Activity:onCreate()->onStart()->onResume()->onPause()->onStop()->onDestory()

onCreate():为Activity设置布局,此时界面还不可见;

onStart(): Activity可见但还不能与用户交互,不能获得焦点

onRestart(): 重新启动Activity时被回调

onResume(): Activity可见且可与用户进行交互

onPause(): 当前Activity暂停,不可与用户交互,但还可见。在新Activity启动前被系统调用保存现有的Activity中的持久数据、停止动画等。

onStop(): 当Activity被新的Activity覆盖不可见时被系统调用

onDestory(): 当Activity被系统销毁杀掉或是由于内存不足时调用

2)Service

a) onBind方式绑定的:onCreate->onBind->onUnBind->onDestory(不管调用bindService几次,onCreate只会调用一次,onStart不会被调用,建立连接后,service会一直运行,直到调用unBindService或是之前调用的bindService的Context不存在了,系统会自动停止Service,对应的onDestory会被调用)

b) startService启动的:onCreate->onStartCommand->onDestory(start多次,onCreate只会被调用一次,onStart会调用多次,该service会在后台运行,直至被调用stopService或是stopSelf)

c) 又被启动又被绑定的服务,不管如何调用onCreate()只被调用一次,startService调用多少次,onStart就会被调用多少次,而unbindService不会停止服务,必须调用stopService 或是stopSelf来停止服务。必须unbindService和stopService(stopSelf)同时都调用了才会停止服务。

3)BroadcastReceiver

a) 动态注册:存活周期是在Context.registerReceiver和Context.unregisterReceiver之间,BroadcastReceiver每次收到广播都是使用注册传入的对象处理的。

b) 静态注册:进程在的情况下,receiver会正常收到广播,调用onReceive方法;生命周期只存活在onReceive函数中,此方法结束,BroadcastReceiver就销毁了。onReceive()只有十几秒存活时间,在onReceive()内操作超过10S,就会报ANR。

进程不存在的情况,广播相应的进程会被拉活,Application.onCreate会被调用,再调用onReceive。

4)ContentProvider:应该和应用的生命周期一样,它属于系统应用,应用启动时,它会跟着初始化,应用关闭或被杀,它会跟着结束。

3、Activity之间的通信方式

1)通过Intent方式传递参数跳转

2)通过广播方式

3)通过接口回调方式

4)借助类的静态变量或全局变量

5)借助SharedPreference或是外部存储,如数据库或本地文件

4、Activity各种情况下的生命周期

1) 两个Activity(A->B)切换(B正常的Activity)的生命周期:onPause(A)->onCreate(B)->onStart(B)->onResume(B)->oStop(A)

这时如果按回退键回退到A onPause(B)->onRestart(A)->onStart(A)->onResume(A)->oStop(B) 如果在切换到B后调用了A.finish(),则会走到onDestory(A),这时点回退键会退出应用

2) 两个Activity(A->B)切换(B透明主题的Activity或是Dialog风格的Acivity)的生命周期:onPause(A)->onCreate(B)->onStart(B)->onResume(B)

这时如果回退到A onPause(B)->onResume(A)->oStop(B)->onDestory(B)

3) Activity(A)启动后点击Home键再回到应用的生命周期:onPause(A)->oStop(A)->onRestart(A)->onStart(A)->onResume(A)

5、横竖屏切换的时候,Activity 各种情况下的生命周期

1)切换横屏时:onSaveInstanceState->onPause->onStop->onDestory->onCreate->onStart-

>onRestoreInstanceState->onResume

2) 切换竖屏时:会打印两次相同的log

onSaveInstanceState->onPause->onStop->onDestory->onCreate->onStart-

>onRestoreInstanceState->onResume->onSaveInstanceState->onPause->onStop->onDestory-

>onCreate->onStart->onRestoreInstanceState->onResume

3) 如果在AndroidMainfest.xml中修改该Activity的属性,添加android:configChanges="orientation"

横竖屏切换,打印的log一样,同1)

4) 如果AndroidMainfest.xml中该Activity中的android:configChanges="orientation|keyboardHidden",则只会打印

onConfigurationChanged->

6、Activity与Fragment之间生命周期比较

Fragment生命周期:onAttach->onCreate->onCreateView->onActivityCreated->onStart-

>onResume->onPause->onStop->onDestoryView->onDestory->onDetach

切换到该Fragment:onAttach->onCreate->onCreateView->onActivityCreated->onStart-

>onResume

按下Power键:onPause->onSaveInstanceState->onStop

点亮屏幕解锁:onStart->onRestoreInstanceState->onResume

切换到其他Fragment: onPause->onStop->onDestoryView

切回到该Fragment: onCreateView->onActivityCreated->onStart->onResume

退出应用:onPause->onStop->onDestoryView->onDestory->onDetach

7、Activity上有Dialog的时候按Home键时的生命周期

AlertDialog并不会影响Activity的生命周期,按Home键后才会使Activity走onPause-

>onStop,AlertDialog只是一个组件,并不会使Activity进入后台。

8、两个Activity 之间跳转时必然会执行的是哪几个方法?

前一个Activity的onPause,后一个Activity的onResume

9、前台切换到后台,然后再回到前台,Activity生命周期回调方法。弹出Dialog,生命值周期回调方法。

1)前台切换到后台,会执行onPause->onStop,再回到前台,会执行onRestart->onStart->onResume

2) 弹出Dialog,并不会影响Activity生命周期

10、Activity的四种启动模式对比

1)standard:标准启动模式(默认),每启动一次Activity,都会创建一个实例,即使从ActivityA startActivity ActivityA,也会再次创建A的实例放于栈顶,当回退时,回到上一个ActivityA的实例。

2) singleTop:栈顶复用模式,每次启动Activity,如果待启动的Activity位于栈顶,则不会重新创建Activity的实例,即不会走onCreate->onStart,会直接进入Activity的onPause-

>onNewIntent->onResume方法

3) singleInstance: 单一实例模式,整个手机操作系统里只有一个该Activity实例存在,没有其他Actvity,后续请求均不会创建新的Activity。若task中存在实例,执行实例的onNewIntent()。应用场景:闹钟、浏览器、电话

4) singleTask:栈内复用,启动的Activity如果在指定的taskAffinity的task栈中存在相应的实例,则会把它上面的Activity都出栈,直到当前Activity实例位于栈顶,执行相应的onNewIntent()方法。如果指定的task不存在,创建指定的taskAffinity的task,taskAffinity的

作用,进入指写taskAffinity的task,如果指定的task存在,将task移到前台,如果指定的task不存在,创建指定的taskAffinity的task. 应用场景:应用的主页面

11、Activity状态保存于恢复

Activity被主动回收时,如按下Back键,系统不会保存它的状态,只有被动回收时,虽然这个Activity实例已被销毁,但系统在新建一个Activity实例时,会带上先前被回收Activity 的信息。在当前Activity被销毁前调用onSaveInstanceState(onPause和onStop之间保存),重新创建Activity后会在onCreate后调用onRestoreInstanceState(onStart和onResume之间被调用),它们的参数Bundle用来数据保存和读取的。

保存View状态有两个前提:View的子类必须实现了onSaveInstanceState; 必须要设定Id,这个ID作为Bundle的Key

12、fragment各种情况下的生命周期

正常情况下的生命周期:onAttach->onCreate->onCreateView->onActivityCreated->onStart-

>onResume->onPause->onStop->onDestoryView->onDestory->onDetach

1)Fragment在Activity中replace onPause(旧)->onAttach->onCreate->onCreateView->onActivityCreated->onStart->onResume->onStop(旧)->onDestoryView(旧)

如果添加到backStack中,调用remove()方法fragment的方法会走到onDestoryView,但不会执行onDetach(),即fragment本身的实例是存在的,成员变量也存在,但是view被销毁了。如果新替换的Fragment已在BackStack中,则不会执行onAttach->onCreate

13、Fragment状态保存onSaveInstanceState是哪个类的方法,在什么情况下使用?

在对应的FragmentActivity.onSaveInstanceState方法会调用

FragmentController.saveAllState,其中会对mActive中各个Fragment的实例状态和View状态分别进行保存.当Activity在做状态保存和恢复的时候, 在它其中的fragment自然也需要做状态保存和恢复.

14、Fragment.startActivityForResult是和FragmentActivity的startActivityForResult?

如果希望在Fragment的onActivityResult接收数据,就要调用

Fragment.startActivityForResult,而不是Fragment.getActivity().startActivityForResult。Fragment.startActivityForResult-

>FragmentActivitymHost.HostCallbacks.onStartActivityFromFragment-

>FragmentActivity.startActivityFromFragment。如果request=-1则直接调用FragmentActivity.startActivityForResult,它会重新计算requestCode,使其大于0xfffff。

15、如何实现Fragment的滑动?

ViewPager+FragmentPagerAdapter+List

16、fragment之间传递数据的方式?

1)在相应的fragment中编写方法,在需要回调的fragment里获取对应的Fragment实例,调用相应的方法;

2)采用接口回调的方式进行数据传递;

a) 在Fragment1中创建一个接口及接口对应的set方法; b) 在Fragment1中调用接口的方法;c)在Fragment2中实现该接口;

3)利用第三方开源框架EventBus

17、service和activity怎么进行数据交互?

1)通过bindService启动服务,可以在ServiceConnection的onServiceConnected中获取到Service的实例,这样就可以调用service的方法,如果service想调用activity的方法,可以在service中定义接口类及相应的set方法,在activity中实现相应的接口,这样service就

可以回调接口言法;

2)通过广播方式

18、说说ContentProvider、ContentResolver、ContentObserver 之间的关系

ContentProvider实现各个应用程序间数据共享,用来提供内容给别的应用操作。如联系人应用中就使用了ContentProvider,可以在自己应用中读取和修改联系人信息,不过需要获取相应的权限。它也只是一个中间件,真正的数据源是文件或SQLite等。

ContentResolver内容解析者,用于获取内容提供者提供的数据,通过ContentResolver.notifyChange(uri)发出消息

ContentObserver内容监听者,可以监听数据的改变状态,观察特定Uri引起的数据库变化,继而做一些相应的处理,类似于数据库中的触发器,当ContentObserver所观察的Uri 发生变化时,便会触发它。

19、请描述一下广播BroadcastReceiver的理解

BroadcastReceiver是一种全局监听器,用来实现系统中不同组件之间的通信。有时候也会用来作为传输少量而且发送频率低的数据,但是如果数据的发送频率比较高或者数量比较大就不建议用广播接收者来接收了,因为这样的效率很不好,因为BroadcastReceiver接收数据的开销还是比较大的。

20、广播的分类

1)普通广播:完全异步的,可以在同一时刻(逻辑上)被所有接收者接收到,消息传递的效率比较高,并且无法中断广播的传播。

2)有序广播:发送有序广播后,广播接收者将按预先声明的优先级依次接收Broadcast。优先级高的优先接收到广播,而在其onReceiver()执行过程中,广播不会传播到下一个接收者,此时当前的广播接收者可以abortBroadcast()来终止广播继续向下传播,也可以将

intent中的数据进行修改设置,然后将其传播到下一个广播接收者。sendOrderedBroadcast(intent, null);//发送有序广播

3)粘性广播:sendStickyBroadcast()来发送该类型的广播信息,这种的广播的最大特点是,当粘性广播发送后,最后的一个粘性广播会滞留在操作系统中。如果在粘性广播发送后的一段时间里,如果有新的符合广播的动态注册的广播接收者注册,将会收到这个广播消息,虽然这个广播是在广播接收者注册之前发送的,另外一点,对于静态注册的广播接收者来说,这个等同于普通广播。

21、广播使用的方式和场景

1)App全局监听:在AndroidManifest中静态注册的广播接收器,一般我们在收到该消息后,需要做一些相应的动作,而这些动作与当前App的组件,比如Activity或者Service的是否运行无关,比如我们在集成第三方Push SDK时,一般都会添加一个静态注册的BroadcastReceiver来监听Push消息,当有Push消息过来时,会在后台做一些网络请求或者发送通知等等。

2)组件局部监听:这种主要是在Activity或者Service中使用registerReceiver()动态注册的广播接收器,因为当我们收到一些特定的消息,比如网络连接发生变化时,我们可能需要在当前Activity页面给用户一些UI上的提示,或者将Service中的网络请求任务暂停。所以这种动态注册的广播接收器适合特定组件的特定消息处理。

22、在manifest 和代码中如何注册和使用BroadcastReceiver?

1)mainfest中注册:静态注册的广播接收者就是一个常驻在系统中的全局监听器,也就是说如果你应用中配置了一个静态的BroadcastReceiver,而且你安装了应用而无论应用是否处于运行状态,广播接收者都是已经常驻在系统中了。

2) 动态注册:动态注册的广播接收者只有执行了registerReceiver(receiver, filter)才会开始监听广播消息,并对广播消息作为相应的处理。

IntentFilter fiter = new IntentFilter("com.smilexie.test.intent.mybroadcastreceiver"); MyBroadcastReceiver receiver = new MyBroadcastReceiver();

registerReceiver(receiver, filter);

//撤销广播接受者的动态注册

unregisterReceiver(receiver);

23、本地广播和全局广播有什么差别?

1)LocalBroadcastReceiver仅在自己的应用内发送接收广播,也就是只有自己的应用能收到,数据更加安全。广播只在这个程序里,而且效率更高。只能动态注册,在发送和注册的时候采用LocalBroadcastManager的sendBroadcast方法和registerReceiver方法。

2)全局广播:发送的广播事件可被其他应用程序获取,也能响应其他应用程序发送的广播事件(可以通过exported–是否监听其他应用程序发送的广播在清单文件中控制)全局广播既可以动态注册,也可以静态注册。

24、AlertDialog,popupWindow,Activity区别

(1)Popupwindow在显示之前一定要设置宽高,Dialog无此限制。

(2)Popupwindow默认不会响应物理键盘的back,除非显示设置了

popup.setFocusable(true);而在点击back的时候,Dialog会消失。

(3)Popupwindow不会给页面其他的部分添加蒙层,而Dialog会。

(4)Popupwindow没有标题,Dialog默认有标题,可以通过

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);取消标题

(5)二者显示的时候都要设置Gravity。如果不设置,Dialog默认是Gravity.CENTER。

(6)二者都有默认的背景,都可以通过setBackgroundDrawable(new

ColorDrawable(android.R.color.transparent));去掉。

(7)Popupwindow弹出后,取得了用户操作的响应处理权限,使得其他UI控件不被触发。而AlertDialog弹出后,点击背景,AlertDialog会消失。

25、Application 和Activity 的Context 对象的区别

1)Application Context是伴随应用生命周期;不可以showDialog, startActivity, LayoutInflation

可以startService\BindService\sendBroadcast\registerBroadcast\load Resource values

2)Activity Context指生命周期只与当前Activity有关,而Activity Context这些操作都可以,即凡是跟UI相关的,都得用Activity做为Context来处理。

一个应用Context的数量=Activity数量+Service数量+1(Application数量)

--Android属性动画特性

--如何导入外部数据库?

--LinearLayout、RelativeLayout、FrameLayout的特性及对比,并介绍使用场景。

--谈谈对接口与回调的理解

--回调的原理

--写一个回调demo

--介绍下SurfView

--RecycleView的使用

--序列化的作用,以及Android两种序列化的区别

--差值器

实现Interpolator接口,设置值的变化趋势,SDK中包含了匀速插值器、加速插值器、减速插值器、先加速再减速、弹

--估值器

实现TypeEvaluatior接口

--Android中数据存储方式

Android期末考试复习试卷(仅供参考)

一、选择题(20分,每小题2分) 1、下列不是手机操作系统的是( D )。 A Android B Window Mobile C Apple IPhone IOS D Windows Vista 2、下列选项哪个不是 Activity 启动的方法(B ) A startActivity B goToActivity C startActivityForResult D startActivityFromChild 3、下列哪个不是 Activity 的生命周期方法之一(B ) A onCreate B startActivity C onStart D onResume 4、下列哪个可做 Android 数据存储(A ) A SQlite B M ySql C Oracle D DB2 5、下列哪个可做EditText编辑框的提示信息( D ) A android:inputType B android:text C android:digits D android:hint 6、Math.ceil(99.1) 的结果是(B ) A 99 B 100 C 99.1 D 99.0 7、android 中下列属于Intent的作用的是(C) A实现应用程序间的数据共享 B是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失 C可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带 D处理一个应用程序整体性的工作 8、关于 res/raw 目录说确的是A A这里的文件是原封不动的存储到设备上不会转换为二进制的格式 B这里的文件是原封不动的存储到设备上会转换为二进制的格式 C这里的文件最终以二进制的格式存储到指定的包中 D这里的文件最终不会以二进制的格式存储到指定的包中 9、Math.round(11.5)等于多少(). Math.round(-11.5)等于多少( C) A 11 ,-11 B 11 ,-12 C 12 ,-11 D 12 ,-12 10、我们都知道Hanlder是线程与Activity通信的桥梁,如果线程处理不当,你的机器就会变得越慢,那么线程销毁的方法是(A ) A onDestroy() B onClear() C onFinish() D onStop() 二、填空题(10 分,共10 题,每空1 分) 1、为了使 android 适应不同分辨率机型,布局时字体单位应用( sp ),像素单位应用( sp )和(dip ) 2、定义 LinearLayout 水平方向布局时至少设置的三个属性: ( android:orientation), (android:layout width)和(android:layout height)

Android面试题附答案

Android面试题附答案 一、选择题(30题,每题1.5分,共45分) 1.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分类,按功能分为:(c),如果为读取的内容进行处理后再输出,需要使用下列哪种流?(g) A、输入流和输出流 B、字节流和字符流 C、节点流和处理流 D、File stream E、Pipe stream F、Random stream G、Filter stream 2.下列代码的执行结果是:(b) public class Test3{ public static void main(String args[]){ System.out.print(100%3); System.out.print(“,”); System.out.println(100%3.0); } } A、1,1 B、1,1.0 C、1.0,1 D、1.0,1.0

3.在继承中,关于构造方法的说明,下列说法错误的是(d) A、子类无条件的继承父类的无参构造方法, B、子类可以引用父类中的有参构造方法,使用super关键字, C、如果子类没有构造方法,则父类无参构造方法作为自已的构造方法, D、如果子类有无参构造方法,而父类的无参构造方法则被覆盖。 4.以下程序的运行结果为(b) public class IfTest{ public static void main(String args[]){ int x=3; int y=1; if(x==y) System.out.println(“Not equal”); else System.out.println(“Equal”); } } A、Not equal B、Equal C、无输出 D、编译出错 5.Java语言中字符串“学Java”所占的内存空间是(a) A. 6个字节 B. 7个字节

Android期末测试题(附带答案)

一、选择题 1、下列哪项不是Android四大组件( C ) A.Seivice B. Activity C. Handler D. Content Provider 2、Android是如何组织Activity的( B ) A.以堆的方式组织Activity B. 以栈的方式组织Activity C. 以树形方式组织Activity D. 以链式方式组织Activity 3、关于线程说法不正确的是( B ) A. 在 android 中,我们可以在主线程中,创建一个新的线程 B. 在创建的新线程中,它可以操作 UI 组件 C. 新线程可以和 Handler 共同使用 D. 创建的 Handler 对象,它隶属于创建它的线程 4、下列关于内存回收的说明,哪个是正确的(B ) A.程序员必须创建一个线程来释放内存 B.内存回收程序负责释放无用内存 C.内存回收程序允许程序员直接释放内存 D.内存回收程序可以在指定的时间释放内存对象 5、设置xml布局文件中的字体大小一般用什么单位( c ) A.dp B. px C. sp D. pt 6、关于service生命周期的onCreate()和onStart()说法正确的是( D ) A.当第一次启动的时候先后调用onCreate()和onStart()方法 B.当第一次启动的时候只会调用onCreate()方法 C.如果service已经启动,将先后调用onCreate()和onStart()方法 D.如果service已经启动,只会执行onStart()方法,不再执行onCreate()方法 7、Android项目工程下面的assets目录,以下说法正确的是( A ) A.这里的文件是原封不动的存储到设备上不会转换为二进制的格式 B.主要放置多媒体等数据文件 C.主要放置图片文件 D.放置字符串,颜色,数组等常量数据 8、在android中使用SQLiteOpenHelper这个辅助类,生成一个可操作的数据库,调用的方法是( A )A.getReadableDatabase() B.getDatabase() C.getEnbleDatabase() D.createDateBase() 9、Activity从可见状态变为半透明遮盖状态时,生命周期中哪个方法被调用( B )

Android面试题整理

Android常用面试简答题 1、android 中得动画有哪几类,它们得特点与区别就是什 么? 参考答案: 有两种,一种就是 Tween(补间)动画、还有一种就是 Frame(帧)动画。Tween 动画,这种实现方式可以使视图组件移动、放大、缩小以及产 生透明度得变化;另一种 Frame 动画,传统得动画方法,通过顺序得播放排列好得图片来实现,类似电影。 2、请简述Handler得机制原理 参考答案: andriod 提供了 Handler 与 Looper 来满足线程间得通信。Handler 先进先出原则。 Looper类用来管理特定线程内对象之间得消息交换(Message Exchange)。 1)Looper: 一个线程可以产生一个 Looper 对象,由它来管理此线程里 得 Message Queue(消息队列)。 2)Handler: 您可以构造 Handler 对象来与 Looper 沟通,以便 push 新消息到 Message Queue 里;或者接收 Looper从 Message Queue 取出)所送来得消息。 3) Message Queue(消息队列):用来存放线程放入得消息。 4)线程:UI thread 通常就就是 main thread,而 Android 启动程序时会替它建立一个Message Queue。 3、说说mvc模式得原理,它在android中得运用 参考答案: MVC 就是 Model,View,Controller 得缩写,从上图可以瞧出 MVC 包含三个部分: 模型( Model )对象:就是应用程序得主体部分,所有得业务逻辑都应该写在该层。 视图( View )对象:就是应用程序中负责生成用户界面得部分。也就是在整个MVC 架构中用户唯一可以瞧到得一层,接收用户得输入,显 示处理结果。 控制器( Control )对象:就是根据用户得输入,控制用户界面数据显示及更新Model 对象状态得部分,控制器更重要得一种导航功能,想 用用户触发得相关事件,交给 Model处理。 Android 鼓励弱耦合与组件得重用,在 Android 中 MVC 得具体体现如下 1) 视图层( view ):一般采用 xml 文件进行界面得描述,使用得时 候可以非常方便得引入,当然,如何您对 android 了解得比较得多了话,就一定可以想到在 android 中也可以使用javascript+html 等得方式作为 view 层,当然这里需要进行 java 与 javascript 之间得通信,幸运得就是, android 提供了它们之间非常方便得通信实现。

(完整版)Android应用开发期末考试题

试题 一、选择题 1 android虚拟设备的缩写是(AVD) 2 Android SDK目前支持的操作系统(DOS) 3 Android开发工具插件(ADT)没有提供的开发功能(自动更新) 4Android SDK提供一些开发工具可以把应用软件打包成Android格式文件(APK) 5 Android当中基本的所有的UI都是由(view)或者其子类实现的 6以下不是Android中调试项目的正确步骤(测试用例) 7下列不是Activity的生命周期方法之一的是(OnResume) 8以下可以做EditText编辑框的提示信息是(adroid:hint) 9以下不是Activity启动的方法是(gotoActivity) 10以下不是手机操作系统的是(windows vista) 二、填空题 1 Android平台由操作系统,中间件,用户界面和应用软件组成的。 2 Android平台提供了2D,3D的图形支持,数据库支持SQLite,并且集成了浏览器 3目前已知的可以用来搭建Android开发环境的系统有windows,Linux,Mac 等4开发中推荐使用的IDE开发组合为IDE,eclipse,ADI来开发 5 Android SDK主要以java语言为基础 6创建工程时需要填写的信息名称有工程名,包的名字,Activity的名字还有应用的名字

7 Android.jar是一个标准的压缩包,其内容包含的是编译后的class,包含了全部的API 三、简答题 1 Android SDK中API的包结构的划分?至少五个 android.util,android.os,android.content,android.view,android.graphics,android.text 2 Android软件框架结构自上而下可分为哪些层? 应用程序(Application)、应用程序框架(Application Framework)、各种库(Libraries)和Android运行环境(RunTime)、操作系统层(OS) 3 Android应用程序的4大组件是什么? Activity、Broadcast Intent Receiver、Service、Content Provider 4 Android应用工程文件结构有哪些? 源文件(包含Activity),R.java文件,Android Library,assets目录res目录,drawble目录,layout目录,values目录,AndroidManifest.xml 5 Android开发应用程序最有可能使用到的应用框架部分是哪些? 一组View(UI)组件,Content Providers,Resource Manger,Notification Manger,Activiy Manger 6 Android底层库包含哪些? 系统C库,媒体库,Surface Manager,LibWebCore,SGL 四、编程 1实现点击一个按钮,结束当前Activity并将需要返回的数据放置并关闭当前窗体请编写核心代码 Bundle bundle = new Bundle ( ); Bundle.putString(“store”,”数据来自Activity1”) ;

安卓实训总结报告

安卓实训总结报告 安卓实训的总结与体会【1】 不知不觉中为期三周的实训已经接近尾声。 虽然时间很短,不过我确实学到了一些我觉得有用的东西,并且是平时上课学不到的东西。 三周的实训,时间很短,确实很短。 原本刚开始,乃至之前听说有为期三周的实训的时候,都觉得,这样的实训不过就是走过场罢了,只有三周的时间,能学到什么东西呢?所以一开始也没当回事。 就这样,带着这样的心态,开始了实训。 安卓实训。 因为第一天周一上午没有课,下午,才算是正式开始了三周的实训。 一开始听老师讲课的时候,感觉很舒服啊,噼里啪啦一讲一堆,不过我就喜欢这样的,听着爽啊。 平时老师上课的时候都是讲一句顿一顿,或者一句话反复琢磨半天,这样的话,虽然老师的出发点是好的,是为了让学生更容易理解,但这样的话,教学的整体进度就下来了。 而且就算是一个知识点反复讲,也不见得能就精通了这个东西,或者说对这个有多么理解。 反而容易让学生产生一种懈怠的情绪。 一、第一件事:说话做事要有真凭实据

而这样一开始,老师就给我一种耳目一新的感觉:这老师上课带劲啊!不过也就仅此而已了。 老师花了一下午的时间着重介绍了老师所在的公司,以及我们接下来三周的实训计划。 接下来一周实训之后,这个实训在老师的刻意营造下,尽量模仿公司的氛围。 而让我感受最受的就是:凭事实说话。 就是无论要下什么结论的时候,都要拿得出能够说服人的数据。 这是我在第一周中感受最深的一件事。 也是我学到的第一件事。 说话下结论要有真凭实据。 二、第二件事:专业技术的不断学习 在这一周中,老师着重讲了如何进行系统构架。 因为之前也跟老师做过项目,所以对进行系统构架的理解要稍微深入些,对其重要性的了解也要多一些。 这样,在老师的讲解下,再和我以前的理解相互验证,感觉就像武功高手,在前辈的点拨下顿悟了一样。 这就是我学到的第二件事,是在专业技能方面的收获。 三、第三件事:学会寻找动力 然后在接下来的一周中,这样的学习中老师让我们每组一个白板,然后把每天的任务完成情况着实记录。

Android面试题集合(含答案)

云时代 Android面试题集[键入文档副标题]

目录 第一章Android最全面试题71道题 (55) 一、选择题 (55) 二.填空和问答 (1212) 25. android中常用的五个布局是FrameLayout(单帧布局)、RelativeLyout(相对布局)、LinerLayout(线 性布局)、TableLayout(表格布局)、AbsoluteLayout(绝对布局) (1212) 26. android 的四大组件是__Activity Service BrodcastReceiver ContentProvier。1212 27. java.io包中的__ObjectInputStream_和_ObjectOutputStream_类主要用于对对象(Object)的读写。 (1212) 28. android 中service的启动方法有:__startService____bindService_ (1212) 29. activity一般会重载7个方法用来维护其生命周期,分别是:onCreate onStart onResume onPause onStop onDestroy onRestart (1212) 30. android的数据存储的方式有:SharedPreferences数据存储、文件存储、SQLite数据库存储数据、 Contentprovider存储数据、网络存储数据 (1212) 31. 当启动一个Activity 并且新的Activity 执行完后需要返回到启动它的Activity 数据,启动新 Activity的方法是_startActivityForResult(intent,RequestCode)_,用来处理返回数据的Activity回调函 数是void onActivityResult(int requestCode,int resultCode,intent data)_。 (1313) 33.下面程序运行的结果是:______________。 (1313) 34. 在android中,请简述jni的调用过程。 (1414) 35. 简述Android的体系结构包括哪些? (1414) 36. 请继承SQLiteOpenHelper实现下述功能 (1414) 37. 页面上现有ProgressBar 控件progressBar,请用书写线程以10秒的的时间完成其进度显示工 作。 (1515) 38. 请描述Activity 的生命周期。 (1616) 39. 如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?1717 40. 如何将一个Activity 设置成对话框窗口的样式。 (1717) 41. 如何退出Activity?如何安全退出已调用多个Activity 的Application? (1717) 43. 请介绍下Android的数据存储方式。 (1919) 44. 请介绍下ContentProvider是如何实现数据共享的。 (1919) 45. 如何启用Service,如何停用Service。 (2020) 46. 注册广播接收器有几种方式,这些方式有何优缺点?请谈谈Android引入广播机制的用意。 .......................................................................... 错误!未定义书签。错误!未定义书签。 47. 请解释下在单线程模型中Message、Handler、Message Queue、Looper之间的关系。错误!

Android面试题-带答案

1.介绍一下Android系统的体系结构 答:应用层:android的应用程序通常涉及用户界面和交互。 应用框架层:UI组件、各种管理器等。 函数库层:系统C库、媒体库、webkit、SQLite等。 linux核心库:linux系统运行的组件。 2.Android的四大组件是哪些,它们的作用? 答:Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周期及一些跳转逻辑 service:后台服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相关的事物,定义好需要接受的Intent提供同步和异步的接口 Content Provider:是Android提供的第三方应用数据的访问方案,可以派生Content Provider类,对外提供数据,可以像数据库一样进行选择排序,屏蔽内部数据的存储细节,向外提供统一的借口模型,大大简化上层应用,对数据的整合提供了更方便的途径 BroadCast Receiver:接受一种或者多种Intent作触发事件,接受相关消息,做一些简单处理,转换成一条Notification,统一了Android的事件广播模型 3.请介绍下Android的数据存储方式。 答:一.SharedPreferences方式 二.文件存储方式 三.SQLite数据库方式 四.内容提供器(Content provider)方式 五. 网络存储方式 4.说说mvc模式的原理 答:mvc是model,view,controller的缩写,mvc包含三个部分: 模型(model)对象:是应用程序的主体部分,所有的业务逻辑都应该写在该层。 视图(view)对象:是应用程序中负责生成用户界面的部分。也是在整个mvc架构中用户唯一可以看到的一层,接收用户的输入,显示处理结果。 控制器(control)对象:是根据用户的输入,控制用户界面数据显示及更新model对象状态的部分,控制器更重要的一种导航功能,响应用户出发的相关事件,交给m层处理。 5.如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态? 答:重写onSaveInstanceState()方法,在此方法中保存需要保存的数据,该方法将会在activity被回收之前调用。通过重写onRestoreInstanceState()方法可以从中提取保存好的数据

Android开发笔试题.docx

Android 应用开发笔试 姓名 :_____________联系电话:_____________得分:_____________ 共100分,考试时间40 分钟 一、选择题(30题,每题 1.5 分,共45分 ) A 、输入流和输出流B、字节流和字符流C、节点流和处理流 D 、File stream E、 Pipe stream F、Random stream 2. 下列代码的执行结果是:() public class Test3{ public static void main(String args[]){ } G、 Filter stream } B、 A 、1,1B、 1,1.0 C、 1.0,1 D 、1.0,1.0盖。 3.在继承中,关于构造方法的说明,下列说法错误的是() C、子类无条件的继承父类的无参构造方法, D、子类可以引用父类中的有参构造方法,使用super 关键字, E、如果子类没有构造方法,则父类无参构造方法作为自已的构造方法, F、如果子类有无参构造方法,而父类的无参构造方法则被覆盖。 4.以下程序的运行结果为 ( ) public class IfTest{ public static void main(String args[]){ int x=3; int y=1; if(x==y) else } } A 、 Not equal B、Equal C、无输出 D 、编译出错 5.Java语言中字符串“学Java ”所占的内存空间是() A. 6个字节 B. 7个字节 C. 10个字节 D. 11个字节 6.Java语言中 A. 1,2,4,4,4,8byte 、short、int、float、double、long B.1,2,48,8,8 C.1,1,4,4,8,8 D.1,2,4,4,8,8 分别是几个字节() 7. 关于下列程序段的输出结果,说法正确的是:() public class MyClass{ static int i; public static void main(Stringargv[]){ } } A 、有错误,变量i 没有初始化。B、null C 、 1 D 、 0 8.下列哪些语句关于内存回收的说明是正确的? () A 、程序员必须创建一个线程来释放内存

android期末考大题(沈阳师范大学)

1.SQLite数据库 public class MySqliteDB extends SQLiteOpenHelper { public MySqliteDB(Context context, String name, CursorFactory factory,int version) { super(context, name, factory, version);} public void onCreate(SQLiteDatabase db) { db.execSQL("create table if not exists people ("+"pid integer primary key,"+ "pname text,"+"page integer)");} public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}} public class MainActivity extends Activity { Button btn;MySqliteDB mydb; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(https://www.sodocs.net/doc/e49575810.html,yout.activity_main); mydb=new MySqliteDB(this, "MyDB", null, 1); btn=(Button)findViewById(R.id.btn); btn.setOnClickListener(new OnClickListener() { public void onClick(View v) { SQLiteDatabase db=mydb.getReadableDatabase();}});} public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true;}} 2.添加ToggleButton public class Example_55 extends Activity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(https://www.sodocs.net/doc/e49575810.html,yout.main); ToggleButton toggleButton = (ToggleButton) findViewById(R.id.toggleButton); toggleButton.setChecked(true); 3.Spinner下拉列表框

2016最新Android常见面试题

1.横竖屏切换时候activity 的生命周期 1). 不设置Activity 的android:configChanges 时, 切屏会重新调用各个生命周期, 切横屏时会执行一次, 切竖屏时会执行两次. 2). 设置Activity 的Android:configChanges=‖orientation‖ 时, 切屏还是会重新调用各个生命周期, 切横、竖屏时只会执行一次. 3). 设置Activity 的Android:configChanges=‖orientation|keyboardHidden‖ 时, 切屏不会重新调用各个生命周期, 只会执行onConfigurationChanged 方法 . 2.android 中的动画有哪几类,它们的特点和区别是什么? 两种,一种是Tween 动画、还有一种是Frame 动画。Tween 动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化; 另一种Frame 动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。 3. 一条最长的短信息约占多少byte? 中文70( 包括标点) ,英文160 ,160 个字节。 4.handler 机制的原理 andriod 提供了Handler 和Looper 来满足线程间的通信。Handler 先进先出原则。Looper 类用来管理特定线程内对象之间的消息交换(Message Exchange) 。 1)Looper: 一个线程可以产生一个Looper 对象,由它来管理此线程里的Message Queue( 消息队列) 。 2)Handler: 你可以构造Handler 对象来与Looper 沟通,以便push 新消息到Message Queue 里; 或者接收Looper 从Message Queue 取出) 所送来的消息。 3) Message Queue( 消息队列): 用来存放线程放入的消息。 4) 线程:UI thread 通常就是main thread ,而Android 启动程序时会替它建立一个Message Queue 。 5. 什么是嵌入式实时操作系统, Android 操作系统属于实时操作系统吗?

Android高级技术面试整理

Android高级技术-简答题 1:Android中五种数据存储方式分别是什么?他们的特点? 答:Android提供了五种存取数据的方式 (1)SharedPreference,存放较少的五种类型的数据,只能在同一个包内使 用,生成XML的格式存放在设备中 (2) SQLite数据库,存放各种数据,是一个轻量级的嵌入式数据库 (3) File文件,通过读取写入方式生成文件存放数据 (4) ContentProvider,主要用于让其他应用程序使用保存的数据 (5)通过网络获取数据和写入数据到网络存储空间 2:简述SharedPreferences存储方式 SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML 文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能读取数据而不支持写入数据,存储修改是通过Editor对象实现。 3:SQLite主要通过那两个类实现其功能的? SQLiteOpenHelper:这个类是数据库的帮助类;用来进行数据库的创建;表的创建,以及版本的更新 SQLiteDatabase:这个类里封装了对表的具体的操作的方法,比如增删改查的方法。 4:SharedPreferences与SQLite数据库的区别 SharedPreferences对象与SQLite数据库相比,免去了创建数据库,创建表,写SQL语句等诸多操作,相对而言更加方便,简洁。但是SharedPreferences也有其自身缺陷,比如其职能存储boolean,int,float,long和String五种简单的数据类型,比如其无法进行条件查询等。所以不论SharedPreferences的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据库这样的其他数据存储方式。 5:ContentProvider与SQLite有何区别 答:Sql只能在该工程的内部共享数据,ContentProvider能在工程之间实现数据共享。 6:描述ContentProvider URI有哪几部分组成 答:URI由是部分组成: A,标准的前缀: ContentProvider(内容提供者)的scheme已经由Android 所规定, scheme为:content:// B,唯一标识整个Content Provider: 主机名(或叫Authority)用于唯一标识这个ContentProvider,外部调用者可以根据这个标识来找到它。

Android面试整里大全

1、Android的四大组件是哪些,它们的作用? 答:Activity:Activity是Android程序与用户交互的窗口,是Android 构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周期以及一些跳转逻辑 service:后台服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相关的事物,定义好需要接受的Intent提供同步和异步的接口 Content Provider:是Android提供的第三方应用数据的访问方案,可以派生Content Provider类,对外提供数据,可以像数据库一样进行选择排序,屏蔽内部数据的存储细节,向外提供统一的接口模型,大大简化上层应用,对数据的整合提供了更方便的途径 BroadCast Receiver:接受一种或者多种Intent作触发事件,接受相关消息,做一些简单处理,转换成一条Notification,统一了Android的事件广播模型 2、请介绍下Android中常用的五种布局。 常用五种布局方式,分别是:FrameLayout(框架布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout (表格布局)。 一、FrameLayout:所有东西依次都放在左上角,会重叠,这个布局比较简单,也只能放一点比较简单的东西。二、LinearLayout:线性布局,每一个LinearLayout里面又可分为垂直布局(android:orientation="vertical")和水平布局(android:orientation="horizontal" )。当垂直布局时,每一行就只有一个元素,多个元素依次垂直往下;水平布局时,只有一行,每一个元素依次向右排列。三、AbsoluteLayout:绝对布局用X,Y坐标来指定元素的位置,这种布局方式也比较简单,但是在屏幕旋转时,往往会出问题,而且多个元素的时候,计算比较麻烦。四、RelativeLayout:相对布局可以理解为某一个元素为参照物,来定位的布局方式。主要属性有:相对于某一个元素android:layout_below、android:layout_toLeftOf相对于父元素的地方 android:layout_alignParentLeft、android:layout_alignParentRigh;五、TableLayout:表格布局,每一个TableLayout里面有表格行TableRow,TableRow 里面可以具体定义每一个元素。每一个布局都有自己适合的方式,这五个布局元素可以相互嵌套应用,做出美观的界面。 3、android中的动画有哪几类,它们的特点和区别是什么 答:两种,一种是Tween动画、还有一种是Frame动画。Tween动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化;另一种Frame动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。 4、android 中有哪几种解析xml的类?官方推荐哪种?以及它们的原理和区别。 答:XML解析主要有三种方式,SAX、DOM、PULL。常规在PC上开发我们使用Dom 相对轻松些,但一些性能敏感的数据库或手机上还是主要采用SAX方式,SAX读取是单向的,优点:不占内存空间、解析属性方便,但缺点就是对于套嵌多个分支来说处理不是很方便。而DOM方式会把整个XML文件加载到内存中去,该方法在查找方面可以和XPath很好的结合如果数据量不是很大推荐使用,而PULL常常用在J2ME对于节点处理比较好,类似SAX方式,同样很节省内存,在J2ME

Android面试经历与经验

android面试 做了一年的android应用开发,准备换个工作环境,结果在面试中却成了一个典型的面霸,两周的十个工作日里,竟然笔试加面试达到了15次。不过,在这些面试中学到了不少东西!下面把我的android面试经历给大家分享一下,免得大家以后走弯路。 同一家公司可能面试了多次,同一家公司我就放在一起了。笔试一般都是java基础和C/c++基础。 Java知识点包括:接口与抽象的使用及区别,多线程,socket基础,集合类,也有个别公司考察定义,很无语。 C/C++知识点包括:指针的移动,排序算法,链表,有时还会有二叉树的遍历或图的遍历。这里具体说一下android面试题目: 南京WSCX: 1、 Activity的生命周期,两个Activity之间跳转时必然会执行的是那几个方法? 2、 不用service,B页面为音乐播放,从A跳转到B,再返回,如何使音乐继续播放? 3、 Service有哪些启动方法?有什么区别? 4、 (音乐播放器)如何加载的音乐信息,如何改善其效率。 5、 电话状态的监听,改变打电话界面(听说我改动的Phone源码就不再问了)。 6、 ListView如何提高其效率? 移动应用开发―三不要‖ 不要让我等不要让我想不要让我烦 1. 分页 2. 异步加载 3. 耗时操作给用户进度提示 7、 还有一些都是在上面的基础上扩展的,跟具体项目有关,就不说了。 总结:他们只是问一问这些基础的知识,都是给外包公司招人,自己做不了主,也就是检验一下应聘人员懂不懂android。

南京SL: 1、 启动一个程序,可以主界面点击图标进入,也可以从一个程序中跳转过去,二者有什么区别? 都是隐式意图 Task:主界面 首先创建一个Task栈,配置了Main Launcher Activity被启动,作为栈底 从其他跳转过来的Activity在启动它的Activity所在的栈里 2、 启动一个Activity有哪几种方法? Start() Main Launcher的Activity 接收事件 通知 桌面小组件 不建议: 服务 广播 3、 怎么样在启动一个Activity时就启动一个service? 4、 两个Activity之间怎么传递数据? 总结:他们也是刚开始做Android,面试人员最多有两三年工作经验,我感觉他们接触Android时间不一定跟我长,也就只问一些他们自己擅长的那一块。 南京RH: 这家让我比较窝火,一个Android问题没问,全是问Java知识,没有笔试,但说了不少题目,让你当场反应,大多是说算法,说出问题的解决思路。最后我问他们不是招收Android 工程师吗,怎么没问Android知识?回答竟然是:Android这东西很简单,会了Java经过几天的培训,就能很快做Android,我晕,那你直接招收Java工程师就是了,干嘛找我!我

Android期末考试复习试卷(仅供参考)

欢迎阅读 一、选择题(20分,每小题2分) 1、下列不是手机操作系统的是( D )。 A Android B Window Mobile C Apple IPhone IOS D Windows Vista 2、下列选项哪个不是Activity 启动的方法(B ) A startActivity B goToActivity C startActivityForResult D startActivityFromChild 3、下列哪个不是Activity 的生命周期方法之一(B ) A onCreate B startActivity C onStart D onResume 4、下列哪个可做Android 数据存储(A ) A 5 6、 7、 A B C D 8、关于 A B C D 9、 10 二、填空题(10 分,共10 题,每空1 分) 1、为了使android 适应不同分辨率机型,布局时字体单位应用( sp ),像素 单位应用( sp )和(dip ) 2、定义LinearLayout 水平方向布局时至少设置的三个属性:( android:orientation), (android:layout width)和(android:layout height) 3、layout 布局文件的命名不能出现字母(大写) 4、设置TextView 字体的属性是:(android:typeface )。 5、Android 四大组件是( Activity),(Service),(BroadcaseReceiver)和(ContentProvider)。

三、判断题(10 分,共10 题,每小题 1 分) 1、Intent 是android 的四大组件之一。(x ) 2、Activity 的onStop() 和onDestroy() 方法效果是差不多的。( x ) 3、Android 工程中,放在res/和assets/下的资源文件都会在R.java 文件里生成相应的编号。 ( v ) 4、res\layout\下面定义的xml 文件不可以大写。(v ) 5、在n 个元素进栈后,它们的出栈顺序和进栈顺序一定正好相反。( v ) 6、对顺序栈进行进栈、出栈操作,不涉及元素的前、后移动问题。( v ) 7、队列是一种对进队列、出队列操作的次序做了限制的线性表。(v ) 8、树中元素之间是多对多的关系。( v) 9 10 1 线性布局 2.Android 3 图片, 4 、运 error:INSTALL_FAILED_INSUFFICIENT_STORAGE。这是什么错误,遇到这种错误该怎么解决?这个错误是 因为ROM 已满造成的,不过Android123 经过多次实践,一般出现在Eclipse 往手机安装时这部分的错误,主要是因为多次 执行了运行某程序,adb 每次都需要进行安装产生了多个实例写一个文件,造成了共享违例。解决的办法就是: 1.检查手机的剩余空间。储存空间大小 2.每次执行一个安装实例 5、利用所学的知识,写出能生成50-100 之间的随机数地简要代码

相关主题