这一篇文章专门整理一下研究过的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面试题目整理与解说(一)的更多相关文章

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

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

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

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

  3. 【Java基础】Java面试题目整理与解说(二)

    1.Collection 和 Collections 的差别. Collection 是集合类的上级接口,继承于他的接口主要有 Set 和 List. Collections 是针对集合类的一个帮助类 ...

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

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

  5. Android面试题目及其答案

    转自:http://blog.csdn.net/wwj_748/article/details/8868640 Android面试题目及其答案 1.Android dvm的进程和Linux的进程, 应 ...

  6. Android面试题目2

    1. 请描述下Activity的声明周期. onCreate->onStart->onRemuse->onPause->onStop->onRestart->onD ...

  7. Android 面试题目汇总

    内容源自:2017-2018最新Android面试题 以下是几点重点,是面试官基本必问的问题,请一定要去了解! 基础知识 – 四大组件(生命周期,使用场景,如何启动) java基础 – 数据结构,线程 ...

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

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

  9. android面试题目大全<完结部分>,android笔试题目集锦

    1. 下列哪些语句关于内存回收的说明是正确的? (b ) A. 程序员必须创建一个线程来释放内存   B.内存回收程序负责释放无用内存    C.内存回收程序允许程序员直接释放内存    D.内存回收 ...

随机推荐

  1. 【codeforces 508D】The Maths lecture

    [题目链接]:http://codeforces.com/problemset/problem/507/D [题意] 让你找符合这样数字的数的个数: 1.有n个数码 2.某个后缀%k的值为0 3.大于 ...

  2. 简单谈谈MySQL优化利器-慢查询

    慢查询 首先,无论进行何种优化,开启慢查询都算是前置条件.慢查询机制,将记录过慢的查询语句(事件),从而为DB维护人员提供优化目标. 检查慢查询是否开启 通过show variables like ' ...

  3. HDU——T 1498 50 years, 50 colors

    http://acm.hdu.edu.cn/showproblem.php?pid=1498 Time Limit: 2000/1000 MS (Java/Others)    Memory Limi ...

  4. 常用类属于哪些jar包

    1.@requestmapping注解,属于org.springframework.web.bind.annotation包下.org.springframework.web jar包. 2.@Res ...

  5. Spring中 @Autowired标签与 @Resource标签 的区别(转)

    spring不但支持自己定义的@Autowired注解,还支持由JSR-250规范定义的几个注解,如:@Resource. @PostConstruct及@PreDestroy. 1. @Autowi ...

  6. vuex3

    以下是一个表示“单向数据流”理念的极简示意: 但是,当我们的应用遇到多个组件共享状态时,单向数据流的简洁性很容易被破坏: 多个视图依赖于同一状态. 来自不同视图的行为需要变更同一状态. 这就是 Vue ...

  7. cell的重用

    cell的重用 简单来说,就是为了节省内存,系统通过一个重用的表示进行获取重用的控件 1 定义重用的标识 NSString * reuseId = @"hero"  //这里的he ...

  8. 为什么同样的数据,俩人生成的obj和bin文件不一样

    http://bbs.csdn.net/topics/270055083 编译器编译的时候可能有些东西依赖时间,或许是优化的原因,如果可以,换个编译器试试,或许两次编译的时候,强制把系统时间调成一个看 ...

  9. STM8S103-STVD建立汇编代码项目

    转载:http://blog.csdn.net/u010093140/article/details/49983397 STVD本来就比较少人用,STVD汇编就更少人用了,不过STM8汇编我自己还是满 ...

  10. express + jqPaginator 分页展示内容

    写在前面的话 分页展示内容也是我们在页面开发中经常会遇到的需求 前端页面利用jqPaginator这个jquery插件来编写 后端利用mysql存储数据 开始敲代码 回顾sql知识 首先让我们回顾一下 ...