`

2012-01-13面试题

阅读更多
一、android五大布局
Android中常用的5大布局方式有以下几种:

线性布局(LinearLayout):按照垂直或者水平方向布局的组件。
帧布局(FrameLayout):组件从屏幕左上方布局组件。
表格布局(TableLayout):按照行列方式布局组件。
相对布局(RelativeLayout):相对其它组件的布局方式。
绝对布局(AbsoluteLayout):按照绝对坐标来布局组件。

二、如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?
onSaveInstanceState() 当你的程序中某一个Activity A在运行时,主动或被动地运行另一个新的Activity B,这个时候A会执行onSaveInstanceState()。B完成以后又会来找A,这个时候就有两种情况:一是A被回收,二是A没有被回收,被回收的A就要重新调用onCreate()方法,不同于直接启动的是这回onCreate()里是带上了参数savedInstanceState;而没被收回的就直接执行onResume(),跳过onCreate()了。
另外,刚才查看了一下Activity的源码,发现Activity还有个onRestoreInstanceState(Bundle outState)方法.这个方法的描述中也写到在Activity回复先前保存的状态时会被调用.

三、秒杀所有Activity
1.一次性关闭所有的Activity
ActivityManager manager = (ActivityManager)getSystemService(ACTIVITY_SERVICE);  
        manager.restartPackage(getPackageName());  

执行代码将杀掉所有进程和服务.记得加上权限:
<uses-permission android:name="android.permission.RESTART_PACKAGES"/>  


四、startService 与bindService启动Service组件 的生命周期
Service的生命周期方法比Activity少一些,只有onCreate, onStart, onDestroy
我们有两种方式启动一个Service,他们对Service生命周期的影响是不一样的。

1 通过startService
    Service会经历 onCreate -> onStart
   stopService的时候直接onDestroy

   如果是调用者(TestServiceHolder)自己直接退出而没有调用stopService的
   话,Service会一直在后台运行。
   下次TestServiceHolder再起来可以stopService。

  2 通过bindService   
    Service只会运行onCreate, 这个时候 TestServiceHolder 和TestService绑定在一起

   TestServiceHolder 退出了,Srevice就会调用onUnbind->onDestroyed
   所谓绑定在一起就共存亡了。

那有同学问了,要是这几个方法交织在一起的话,会出现什么情况呢?
一个原则是Service的onCreate的方法只会被调用一次,就是你无论多少次的startService又 bindService,Service只被创建一次。如果先是bind了,那么start的时候就直接运行Service的onStart方法,如果先 是start,那么bind的时候就直接运行onBind方法。如果你先bind上了,就stop不掉了,对啊,就是stopService不好使了,只 能先UnbindService, 再StopService,所以是先start还是先bind行为是有区别的。

看起来情况很多,不过我会把这次的代码包括上回Activity生命周期的研究代码都贴上了,希望你喜欢!大家有兴趣可以回去点点按钮看看log,多看几遍就知道了。

Android中的服务和windows中的服务是类似的东西,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。服务的开发比较简单,如下:
第一步:继承Service类
public class SMSService extends Service { }

第二步:在AndroidManifest.xml文件中的<application>节点里对服务进行配置:
<service android:name=".SMSService" />

服务不能自己运行,需要通过调用Context.startService()或Context.bindService()方法启动服务。这两个方法都可以启动Service,但是它们的使用场合有所不同。使用startService()方法启用服务,调用者与服务之间没有关连,即使调用者退出了,服务仍然运行。使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止,大有“不求同时生,必须同时死”的特点。

如果打算采用Context.startService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onStart()方法。如果调用startService()方法前服务已经被创建,多次调用startService()方法并不会导致多次创建服务,但会导致多次调用onStart()方法。采用startService()方法启动的服务,只能调用Context.stopService()方法结束服务,服务结束时会调用onDestroy()方法。

如果打算采用Context.bindService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onBind()方法。这个时候调用者和服务绑定在一起,调用者退出了,系统就会先调用服务的onUnbind()方法,接着调用onDestroy()方法。如果调用bindService()方法前服务已经被绑定,多次调用bindService()方法并不会导致多次创建服务及绑定(也就是说onCreate()和onBind()方法并不会被多次调用)。如果调用者希望与正在绑定的服务解除绑定,可以调用unbindService()方法,调用该方法也会导致系统调用服务的onUnbind()-->onDestroy()方法.

五、QVGA HVGA WVGA屏的density值:
QVGA 240*320像素
HVGA 480*320像素
WVGA 800*480像素

六、解释AIDL
在android平台中,各个组件运行在自己的进程中。他们之间是不能相互访问的,但是在程序之间不可避免要传递一些对象,在进程之间相互通信。为了实现进程之间的相互通信,android采用了一宗轻量级的实现方式RPC来完成进程之间通信,并且android通过接口定义语言AIDL来生成两个进程之间相互访问的代码。
分享到:
评论

相关推荐

    大厂面试题第一季-阿里篇-对标阿里P7面试教程

    大厂面试题第一季-阿里篇-001-P7程序员面试这样解题数据库索引-1.mp4 大厂面试题第一季-阿里篇-001-P7程序员面试这样解题数据库索引-2.mp4 大厂面试题第一季-阿里篇-001-P7程序员面试这样解题数据库索引-3.mp4 大厂...

    01-Java基础知识面试题.docx

    01-Java基础知识面试题.docx01-Java基础知识面试题.docx01-Java基础知识面试题.docx01-Java基础知识面试题.docx01-Java基础知识面试题.docx01-Java基础知识面试题.docx01-Java基础知识面试题.docx01-Java基础知识...

    01-Java公司面试真题 02-Java面试文档 03-大数据面试文档 04-Java必知必会108题

    04-Java必知必会108题01-Java公司面试真题 02-Java面试文档 03-大数据面试文档 04-Java必知必会108题01-Java公司面试真题 02-Java面试文档 03-大数据面试文档 04-Java必知必会108题01-Java公司面试真题 02-Java面试...

    铜3铁4,最新22道面试题-Vue系列.docx

    最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列...

    Shopee前端面试岗-面试题-历年面经

    Shopee前端面试岗-面试题-历年面经 Shopee前端面试岗-面试题-历年面经 Shopee前端面试岗-面试题-历年面经 Shopee前端面试岗-面试题-历年面经 Shopee 前端岗开发面经汇总 本系列将提供Shopee 前端岗位历年面经,所有...

    安卓app开发项目-联想Android开发工程师面试题(源码).zip

    安卓app开发项目-联想Android开发工程师面试题(源码).zip安卓app开发项目-联想Android开发工程师面试题(源码).zip安卓app开发项目-联想Android开发工程师面试题(源码).zip安卓app开发项目-联想Android开发工程师面试...

    2012-11-8Java面试题

    本人是 重庆北大青鸟的学员、目前已经工作一年。这是本人在学校和老师总结出来 社会综合常见面试 考官必问java面试题

    北京-京东-Java中级面试题

    北京-京东-Java中级面试题北京-京东-Java中级面试题北京-京东-Java中级面试题北京-京东-Java中级面试题北京-京东-Java中级面试题北京-京东-Java中级面试题北京-京东-Java中级面试题北京-京东-Java中级面试题北京-...

    c++面试题面试题面试题面试题

    c++面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试...

    ----------群硕面试题------

    群硕面试题,C#方面的,可以看看 群硕面试题,C#方面的,可以看看

    2021-11-12号-java面试题-北京-资料附赠-招聘面试题.rar

    2021-11-12号-java面试题-北京-资料附赠

    2012-2015年嵌入式面试题集锦

    2012-2015年嵌入式面试题集锦

    上海Linux运维工程师-面试题-个人总结).docx

    上海Linux运维工程师-面试题-个人总结).docx上海Linux运维工程师-面试题-个人总结).docx上海Linux运维工程师-面试题-个人总结).docx上海Linux运维工程师-面试题-个人总结).docx上海Linux运维工程师-面试题-个人总结)...

    java面试题-50道最容易考的java题

    java面试题-50java面试题-50道最容易考的java题java面试题-50道最容易考的java题java面试题-50道最容易考的java题java面试题-50道最容易考的java题java面试题-50道最容易考的java题java面试题-50道最容易考的java题...

    最常见的-35-个-Python-面试题及答案.docx

    最常见的-35-个-Python-面试题及答案全文共10页,当前为第1页。最常见的-35-个-Python-面试题及答案全文共10页,当前为第1页。最常见的 35 个 Python 面试题及答案(2018 版) 最常见的-35-个-Python-面试题及答案...

    .NET面试题----------.NET常见面试100题帮助您轻松过面试一关

    这份压缩包包含的".NET面试题----------.NET常见面试100题帮助您轻松过面试一关"资源,旨在帮助求职者准备.NET相关的面试,涵盖了一系列关键知识点。 首先,面试中可能会涉及.NET框架的基础概念。例如,理解什么是...

    04-大数据技术之高频面试题9.0.5.pdf

    04_大数据技术之高频面试题9.0.5.pdf04_大数据技术之高频面试题9.0.5.pdf04_大数据技术之高频面试题9.0.5.pdf04_大数据技术之高频面试题9.0.5.pdf04_大数据技术之高频面试题9.0.5.pdf04_大数据技术之高频面试题9.0.5...

    各大公司面试题-指点通.txt面试题.txt

    各大公司面试题-指点通.txt面试题.txt各大公司面试题-指点通.txt面试题.txt

    01-2022年北京大数据面试题汇总.pdf

    01_2022年北京大数据面试题汇总.pdf01_2022年北京大数据面试题汇总.pdf01_2022年北京大数据面试题汇总.pdf01_2022年北京大数据面试题汇总.pdf01_2022年北京大数据面试题汇总.pdf01_2022年北京大数据面试题汇总.pdf01...

Global site tag (gtag.js) - Google Analytics