这一篇文章专门整理一下研究过的Android面试题,内容会随着学习不断的增加,如果答案有错误,希望大家可以指正

1.简述Activity的生命周期


当Activity开始启动的时候,首先调用onCreate(),onStart(),onResume()方法,此时Activity对用户来说,是可见的状态

当Activity从可见状态变为被Dialog遮挡的状态的时候,会调用onPause()方法,此时的Activity对用户可见,但是不能相
应用户的点击事件

当Activity从可见状态变为被其他的Activity完全覆盖或者是点击Home进入后台的时候,会依次调用onPause(),onStop()方法,如果在这个期间,系统内存不足,导致Activity被回收的话,还会调用onDestory()方法

当Activity从被Dialog遮挡的状态恢复的时候,会调用onResume()方法,从而恢复可以点击的状态

当Activity从被其他Activity遮挡或者是进入后台状态恢复,而且没有被系统回收的时候,会依次调用onRestart(),onStart(),onResume(),恢复到可以与用户进行交互的状态

当Activity从被其他Activity遮挡或者进入后台,而且被系统回收的时候,相当于重新打开一个Activity,既调用onCreate(),onStart(),onResume()方法,从而可以与用户进行交互

在onPause()方法执行后,系统会停止动画等消耗 CPU 的操作,同时我们应该在这里保存数据,因为这个时候程序的优先级降低,有可能被系统收回。在这里保存的数据,应该在 onResume 里读出来,帮用户恢复之前的状态。

在onDestroy()执行后,activity就被真的干掉,可以用 isFinishing()来判断它,如果此时有 Progress Dialog显示,我们应该在onDestroy()里 cancel 掉,否则线程结束的时候,调用Dialog 的 cancel 方法会抛异常。 

2.Intent启动Activity有几种方式,如何实现?

Intent启动Activity有两种方式,分别为显式意图,隐式意图
第一种,显示意图的实现。
Intent intent = new Intent(this,OtherActivity.class);
startActivity(intent);

显式意图还有另外一种形式

Intent intent = new Intent();
ComponentName component = new ComponentName(this, OtherActivity.class);
intent.setComponent(component);
startActivity(intent);

其实这两种形式其实是一样的,我们看一下Intent构造函数的代码

public Intent(Context packageContext, Class<?> cls) {
        mComponent = new ComponentName(packageContext, cls);
}

这样我们就一目了然了,其实我们经常使用的Intent的构造方法是第二种方式的简化版

第二种,是隐式意图的实现。
首先我们看一下隐式意图的调用方式
Intent intent = new Intent();
intent.setAction("other");
startActivity(intent);

隐式意图是通过setAction来进行区分到底跳转到哪一个界面,那么我们肯定要在需要跳转的页面设置一标志,我们需要在AndroidManifest.xml中对这个进行设置


<activity android:name="com.example.lifecicledemo.OtherActivity" >
<intent-filter>
<action android:name="other" /> <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

这样当我们使用setAction的时候,就可以知道我们到底是想跳转到哪一个页面了。


3.Android中获取图片有哪几种方式

方式一
Drawable drawable = getResources().getDrawable(R.drawable.ic_launcher);
img.setImageDrawable(drawable);

方式二

Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.ic_launcher);
img.setImageBitmap(bitmap);

方式三

AssetManager assetManager = getResources().getAssets();
try {
InputStream is = assetManager.open("ic_launcher.png");
Bitmap bitmap = BitmapFactory.decodeStream(is);
img.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}

方式四

AssetManager assetManager = getResources().getAssets();
try {
InputStream is = assetManager.open("ic_launcher.png");
Drawable drawable = Drawable.createFromStream(is, null);
img.setImageDrawable(drawable);
} catch (IOException e) {
e.printStackTrace();
}


【Android进阶】Android面试题目整理与讲解(一)的更多相关文章

  1. 【Android进阶】Android面试题目整理与讲解(二)

    1. ArrayList,Vector, LinkedList 的存储性能和特性 ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们 ...

  2. Android面试题目整理与解说(一)

    这一篇文章专门整理一下研究过的Android面试题,内容会随着学习不断的添加,假设答案有错误,希望大家能够指正 1.简述Activity的生命周期 当Activity開始启动的时候,首先调用onCre ...

  3. Android面试题目整理与解说(二)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/bz419927089/article/details/31386787 1.Dalvik和标准Jav ...

  4. Android 进阶 Android 中的 IOC 框架 【ViewInject】 (下)

    上一篇博客我们已经带大家简单的吹了一下IoC,实现了Activity中View的布局以及控件的注入,如果你不了解,请参考:Android 进阶 教你打造 Android 中的 IOC 框架 [View ...

  5. Android进阶——Android事件分发机制之dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent

    Android事件分发机制可以说是我们Android工程师面试题中的必考题,弄懂它的原理是我们避不开的任务,所以长痛不如短痛,花点时间干掉他,废话不多说,开车啦 Android事件分发机制的发生在Vi ...

  6. C++常见的面试题目整理

    本文列出C++面试中经常遇到的一些问题,都是一些常见的面试考点,如果后续遇到其他常见面试问题还会再次更新.希望对近期参加面试的同学有一些帮助.先后顺序与问题的重要性无关,查看的时候,最好是全面了解一下 ...

  7. Android 进阶Android 中的 IOC 框架 【ViewInject】 (上)

    1.概述 首先我们来吹吹牛,什么叫IoC,控制反转(Inversion of Control,英文缩写为IoC),什么意思呢? 就是你一个类里面需要用到很多个成员变量,传统的写法,你要用这些成员变量, ...

  8. ES6高频面试题目整理

    本篇文章是根据以下内容进行的总结 1.https://segmentfault.com/a/1190000011344301 2.http://www.bslxx.com/a/mianshiti/ti ...

  9. Android进阶——Android视图工作机制之measure、layout、draw

    自定义View一直是初学者们最头疼的事情,因为他们并没有了解到真正的实现原理就开始试着做自定义View,碰到很多看不懂的代码只能选择回避,做多了会觉得很没自信.其实只要了解了View的工作机制后,会发 ...

随机推荐

  1. RBAC用户角色权限设计方案

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用 户-角色 ...

  2. IOS中的id与nil

    1 id id和void *并非完全一样.在上面的代码中,id是指向struct objc_object的一个指针,这个意思基本上是说,id是一个指向任何一个继承了Object(或者NSObject) ...

  3. iOS 如何创建单例对象

    一.什么是单例? 说到单例我就想起了我的java啊 ,不禁感叹起我的大学时光,学了4年的java开发,到现在还是放弃了我的java,踏入了iOS的行列. 算了,入正轨,我现在正是铁树银花的青春美少女, ...

  4. ZooKeeper的安装、配置、启动和使用(一)——单机模式

    ZooKeeper的安装.配置.启动和使用(一)——单机模式 ZooKeeper的安装非常简单,它的工作模式分为单机模式.集群模式和伪集群模式,本博客旨在总结ZooKeeper单机模式下如何安装.配置 ...

  5. [Xcode]使用target进行协同开发

    协同开发时候发现难免会因为某些条件宏导致上传到SVN的代码影响到其他同时,但是每一次去修很多条件编译也不是很方便,所以可以通过新建自己的target来控制product. 一.创建自己的target: ...

  6. 整理自百度知道提问的几道Java编程题

    蚂蚁爬杆 问题描述: 有一根27厘米的细木杆,在第3厘米.7厘米.11厘米.17厘米.23厘米这五个位置上各有一只蚂蚁.木杆很细,不能同时通过一只蚂蚁.开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝 ...

  7. Java读取本地文件,并显示在JSP文件中

        当我们初学IMG标签时,我们知道通过设置img标签的src属性,能够在页面中显示想要展示的图片.其中src的值,可以是磁盘目录上的绝对,也可以是项目下的相对路径,还可以是网络上的图片路径.在存 ...

  8. Visual Assist X 10.8.2052的Crack破解补丁. 2014.11.05 (General release.)

    VA小组立即更新频率似有些放缓几乎,版本号都是2个月才更新一次,而这次的更新幅度也还是比較大的,新增了6个特性,而且修正和20余处大大小小的问题,而且也是正式发行版,推荐更新. 对于破解补丁还是老规矩 ...

  9. [linux]chown和chmod命令

    chown chown命令是将指定文件的拥有者改为指定的用户或组 例如: chown mail:mail test.log,把test文件指定拥有者和组都为mail chown -R mail:mai ...

  10. hdu 1251 统计难题 (map水过)

    # include <stdio.h> # include <algorithm> # include <string> # include <map> ...