android面试/笔试题归纳2

第二波,继续继续,大家多多指教。

题目

  1. 自定义view
  2. service的基础知识
  3. thread在applicition,activity,service中创建有什么区别
  4. thread,activity,service之间怎么互相通信
  5. service保活

答案

  1. 自定义view
    自定义view有点深,有点复杂。给几篇参考文章,大家根据自己需求回答吧。
    郭霖大神的文章,一共四篇,讲得很详细
    教你搞定Android自定义View
  2. service的基础知识
    启动服务有两种方法,与此对应的就是两种生命周期。
    通过startService启动服务。依次调用onCreate -> onStartCommand
    通过stopService关闭服务。调用onDestroy方法。无论之前服务被startService了多少次,都只需要一次stopService就能关闭服务。

通过bindService启动服务。依次调用onCreate-> onBind
通过unbindService关闭服务。调用onUnbind -> onDestory方法
反复调用bindService不会多次生成Service实例。通过bind绑定的服务,与调用者可以说是绑定在一起,同生共死的。当调用者被销毁,服务也会立刻终止。

  1. thread在applicition,activity,service中创建有什么区别
    如果在activity中创建thread,需要在ondestory方法中停止线程。在application和service中也是同理的。
    于是乎在哪里创建thread取决于你希望你的thread存活多久。相比来说,activity中的thread存活的时间最短,activity跳转时就会结束,application次之,service可以一直在后台运行,所以存活的时间最长。

  2. thread,activity,service之间怎么互相通信
    activity和service之间:
    1.binder对象 2.广播
    activity或service和thread通信:
    1.handler 2.AsyncTask 3.Activity.runOnUIThread(Runnable) 4.View.Post(Runnable) 5.View.PostDelayed(Runnabe,long) (想具体学习可以看 Android中UI线程与后台线程交互设计的5种方法)

  3. service保活
    参考自:关于 Android 进程保活,你所需要知道的一切
    和怎么让 Android 程序一直后台运行,像 QQ 一样不被杀死?
    1.白,启动前台service
    2.灰,利用线程漏洞,不同版本的系统手段不一样。
    3.黑,监听系统或者其他app的广播唤醒自己的service
    还有双service互相监听,联系 厂家加入白名单等等等等,总而言之,把app的性能做好,及时释放内存,才能让进程存活更久。

你可能感兴趣的:(android面试/笔试题归纳2)