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)进程间相互独立,同一进程的各线程间共享。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值