一、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来生成两个进程之间相互访问的代码。
分享到:
相关推荐
大厂面试题第一季-阿里篇-001-P7程序员面试这样解题数据库索引-1.mp4 大厂面试题第一季-阿里篇-001-P7程序员面试这样解题数据库索引-2.mp4 大厂面试题第一季-阿里篇-001-P7程序员面试这样解题数据库索引-3.mp4 大厂...
04-Java必知必会108题01-Java公司面试真题 02-Java面试文档 03-大数据面试文档 04-Java必知必会108题01-Java公司面试真题 02-Java面试文档 03-大数据面试文档 04-Java必知必会108题01-Java公司面试真题 02-Java面试...
机构应届毕业生----java企业面试题总结机构应届毕业生----java企业面试题总结机构应届毕业生----java企业面试题总结机构应届毕业生----java企业面试题总结机构应届毕业生----java企业面试题总结机构应届毕业生----...
性能测试面试题宝典--覆盖大部分性能专项面试题性能测试面试题宝典--覆盖大部分性能专项面试题性能测试面试题宝典--覆盖大部分性能专项面试题性能测试面试题宝典--覆盖大部分性能专项面试题性能测试面试题宝典--覆盖...
python面试题-2023(面试).docxpython面试题-2023(面试).docxpython面试题-2023(面试).docxpython面试题-2023(面试).docxpython面试题-2023(面试).docxpython面试题-2023(面试).docxpython面试题-2023(面试)....
安卓app开发项目-联想Android开发工程师面试题(源码).zip安卓app开发项目-联想Android开发工程师面试题(源码).zip安卓app开发项目-联想Android开发工程师面试题(源码).zip安卓app开发项目-联想Android开发工程师面试...
Shopee前端面试岗-面试题-历年面经 Shopee前端面试岗-面试题-历年面经 Shopee前端面试岗-面试题-历年面经 Shopee前端面试岗-面试题-历年面经 Shopee 前端岗开发面经汇总 本系列将提供Shopee 前端岗位历年面经,所有...
本人是 重庆北大青鸟的学员、目前已经工作一年。这是本人在学校和老师总结出来 社会综合常见面试 考官必问java面试题
北京-京东-Java中级面试题北京-京东-Java中级面试题北京-京东-Java中级面试题北京-京东-Java中级面试题北京-京东-Java中级面试题北京-京东-Java中级面试题北京-京东-Java中级面试题北京-京东-Java中级面试题北京-...
2021-11-12号-java面试题-北京-资料附赠
2012-2015年嵌入式面试题集锦,用于找工作时对基础知识的复习
上海Linux运维工程师-面试题-个人总结).docx上海Linux运维工程师-面试题-个人总结).docx上海Linux运维工程师-面试题-个人总结).docx上海Linux运维工程师-面试题-个人总结).docx上海Linux运维工程师-面试题-个人总结)...
这份压缩包包含的".NET面试题----------.NET常见面试100题帮助您轻松过面试一关"资源,旨在帮助求职者准备.NET相关的面试,涵盖了一系列关键知识点。 首先,面试中可能会涉及.NET框架的基础概念。例如,理解什么是...
1.1 1、MySQL 的复制原理以及流程 (1)、复制基本原理流程 1. 主:binlog 线程——记录下所有改变了数据库数据的语句,放进master 上的binlog 中; 2. 从:io 线程——在使用start slave...更多面试题,请下载附件......
因为字数限制 下面目录只是部分 大厂面试题第一季-阿里篇-001-P7程序员面试这样解题数据库索引-1.mp4 大厂面试题第一季-阿里篇-001-P7程序员面试这样解题数据库索引-2.mp4 大厂面试题第一季-阿里篇-001-P7程序员...
因为字数限制 下面目录只是部分 大厂面试题第一季-阿里篇-001-P7程序员面试这样解题数据库索引-1.mp4 大厂面试题第一季-阿里篇-001-P7程序员面试这样解题数据库索引-2.mp4 大厂面试题第一季-阿里篇-001-P7程序员...
因为字数限制 下面目录只是部分 大厂面试题第一季-阿里篇-001-P7程序员面试这样解题数据库索引-1.mp4 大厂面试题第一季-阿里篇-001-P7程序员面试这样解题数据库索引-2.mp4 大厂面试题第一季-阿里篇-001-P7程序员...
"Java 面试题及其答案.doc"和"JAVA面试题.doc"提供了大量的面试题及解答,涵盖了从基础知识到高级特性的广泛范围,包括反射、注解、设计模式、Spring框架、数据库操作等。通过这些题目,求职者可以自我评估,了解...
面试题集锦通常涵盖了各种技术领域,包括但不限于编程语言、数据结构、算法、操作系统、计算机网络、数据库、软件工程等。下面将根据这些主题详细阐述一些常见的面试知识点。 1. **编程语言**:面试时,面试官通常...
面试题练习题前端 JavaScript高级语法-字符串属性面试题练习题前端 JavaScript高级语法-字符串属性面试题练习题前端 JavaScript高级语法-字符串属性面试题练习题前端 JavaScript高级语法-字符串属性面试题练习题前端...