Android面试题

Posted 天耀106

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android面试题相关的知识,希望对你有一定的参考价值。

1、请简述Activity的生命周期

答:onCreate(Bundle savedInstanceState)、onStart()、onResume()、onPause()、onStop()、onDestroy()、onRestart()

2、请简述service的生命周期?启动方式?有何区别?

答:通常有两种方式启动一个service,他们对service的生命周期是不一样的。

第一种方式:startService,service的生命周期onCreate()-->onStart()-->onDestroy()

服务停止的方式:service.stopService()

第二种方式:bindService,service的生命周期onCreate()-->onBind()-->onUnBind()-->onDestroy()

服务停止的方式:UnbindService()再stopService()

使用startService()方式启动服务,调用者服务之间没有关连,即时调用者退出了,服务仍然运行;使用bindService()方式启动服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止。

3、ANR产生的原因?如何避免?

答:由于主线程有很多事情要做,比如响应点击事件等,如果在主线程做了太多耗时的操作,则有可能引发ANR。

避免:尽量在耗时的操作放在子线程。

4、使用bitmap需要注意什么?

答:1)使用BitmapFactroy的decodeStream获取bitmap

2) 使用BitmapFactory.Options参数

a)Options.inSampleSize,成比例放缩

b)Options.inJustDecodeBounds,只获取长宽,不获取图片

c)Options.isPreferredConfig,修改图片编码格式

3)手动回收Bitmap

5、service和thread的区别?

答:1)Service是系统的四大组件之一,Thread只是用来一个执行后台任务的工具类

2)service可以设置独立进程;thread不可以,只能存在于进程中。

3)service有自己的生命周期。如果已bind的方式启动,生命周期和activity相同。如果以start方式启动,不调用stop方法,会一直在后台运行。thread运行完了就结束了,启动后跟activity没有关系了,哪怕activity结束了,thread也会在后台运行。

4)不同的Activity可以调用同一个service,不同的Activity不能调用同一个thread

5)service中可以创建线程,避免ANR

6、进程和线程的区别?

答:线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程比进程更小,基本上不拥有系统资源,故对它调度使用资源小,能更高效的提高系统内多个程序间并发执行的。

进程是系统进行资源分配和调度的独立单位。可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。

区别:1)线程上下文切换比进程上下文切换快得多。

 2)进程间相互独立,同一进程的各线程间共享。


以上是关于Android面试题的主要内容,如果未能解决你的问题,请参考以下文章

bat等大公司常考java多线程面试题

操作系统面试题集合

面试题系列:Java 夺命连环16问

备战秋招冲击大厂Java面试题系列—并发编程

面试操作系统常考问题

Android 面试题总结之Android 基础