收藏本站
博为峰Android开发培训Banner
您所在的位置:博为峰教育首页 > 资料精选 > 学习资料 > 【学习资料】android面试题之二

【学习资料】android面试题之二

   发布时间:2015年07月10日 14:15分    来源:博为峰教育网采编    关键词:Android面试题     | 上一篇 | 下一篇 |


      八、如何启用Service ,如何停用Service  
      启动方式有两种:startService(),bindService().它们都是Context的方法。  
      区别:使用startService()方法启用服务,调用者与服务之间没有关连, 即使调用者退出了,服务仍然运行。使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止.  
      停用:采用startService()方法启动的服务,只能调用Context.stopService()方法结束服务。   采用bindService()方法启动的服务,调用者和服务绑定在了一起。若调用者退出,系统会调用onUnbind()方法解除绑定,然后调用onDestroy()方法。当然,开发者也可以自己调用Context.unbindService()方法手动解除绑定。接着,系统也会调用服务的onUnbind()-->onDestroy()方法。      


      九、注册广播有几种方式,这些方式有何优缺点?  
      注册方式有两种:一是在代码中动态注册:registerReceiver(receiver,filter);   二是在AndroidManifest中配置。  
      区别:
      1)第一种不是常驻型广播,也就是说广播跟随程序的生命周期。
      2)第二种是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。  
      注:当需要通过广播更新UI时,一般采用动态注册的方式,启动Activity时候注册BroadcastReceiver,Activity不可见时候,取消注册。  
      在AndroidManifest配置还有一个缺点:由于它一直处于活动状态,cpu和电源资源耗费比较大。      


      十、什么是ANR 如何避免它?  
      ANR:Application Not Responding。 
      产生原因:在Android中,活动管理器和窗口管理器这两个系统服务负责监视应用程序的响应,当用户的操作在5s内应用程序没能做出反应,BroadcastReceiver在10秒内没有执行完毕,就会出现应用程序无响应对话框,这就是ANR。  
      解决方式:Activity应该在它的关键生命周期方法里尽可能少的去做创建操作、潜在的耗时操作(网络或数据库操作等),或者高耗时的计算操作(改变位图尺寸等),而应该在子线程里(或者异步方式)来完成。主线程应该为子线程提供一个Handler,以便子线程完成时能够提交给主线程。

      想要获得更全的Android软件开发工程师面试题请点击“Android开发工程师面试题汇总 ”。