美文网首页
Java基础知识整理3——Android篇

Java基础知识整理3——Android篇

作者: Looofter | 来源:发表于2017-05-15 13:13 被阅读0次

    一、activity生命周期,fragment生命周期,broadcastReceiver生命周期,service生命周期

           activity:onCreate() -> onStart() -> onResume() -> onPause() -> onStop() -> onDestroy()

           fragment:onAttach() -> onCreate() -> onCreateView() -> onActivityCreate() -> onStart() -> onResume() -> onPause() -> onStop() -> onDestroyView() -> onDestroy ->onDetach()

           broadcastReceiver:10秒左右,onReceive() 方法开始到结束

           service:

                1.startService(): onCreate() -> onStartCommand() -> service running -> onDestroy()

                2.bindService():onCreate() -> onBind() -> Clients are bound to service -> onUnbind() -> onDestory()

    二、service如何操作activity

          1.直接把activity传给service,service通过activity实例随便操作activity

          2.使用接口回调方式,activity实现相应的接口,service通过接口进行回调

          3.使用广播

    三、如何解决方法数65K的问题

          使用Android Studio的 gradle 可以构建MutilDex

    四、Intent 可以传递哪些数据类型

           1.Serializable

           2.charsequence 主要用来传递String,char等

           3.parcelable

           4.Bundle

    五、Activity的启动模式,在AndroidManifest.xml的activity标签修改属性:

           1.Standard:默认标准模式,每启动一个都会创建一个实例

           2.SingleTop:栈顶服用,如果在栈顶就调用onNewIntent复用,从onResume()开始

           3.SingleTask:栈内复用,本栈内只要用该类型Activity就会调到栈顶复用,从onResume()开始

           4.SingleInstance:单例模式,除了3中的特性,系统会单独给该Activity创建一个栈

    六、xml 三种解析方式

           DOM:检索和更新效率高;对于特别大的文档,解析和加载整个文档将会很耗资源

           SAX:解析速度快,占用内存小;代码量大,不能倒退

           PULL:小巧轻便,解析速度快,简单易用,可随时停止解析,适用于XML文档较大但只需要文档的一部分时

    七、Android线程间通信有哪几种方式

          1.共享变量(内存)

          2.管道

          3.handler机制

    八、子线程中能不能new handler?

          子线程可以new一个mainHandler,然后发送消息到UIThread

    九、横竖屏切换时候Activity的生命周期

           1.不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次

           2.设置Activity的android:configChanges=“orientation”时,切屏还是会重新调用各个生命周期,切横竖屏时只执行一次

           3.设置Activity的android:configChanges=“orientation | keyboardHidden”时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

    10.浅谈MVC、 MVP、 MVVM区别与联系

          根据项目的需求和方案,选择一个适合的软件架构,极大的减少了开发的成本,与维护的时间。架构清晰,并提升编程速度。更容易进行后续的测试以及定位问题。参考地址:http://blog.csdn.net/donkor_/article/details/54970769

    十一、什么是内存泄漏、内存溢出。两者之间的区别

             内存泄露(Memory Leak)指你用new申请了一块内存,但是没有通过free或delete将内存释放,导致这块内存一直处于占用状态内存泄露和硬件没有关系,它是由软件设计缺陷引起的。

             内存溢出(Memory Overflow)指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory。比如你申请了10个字节的空间,但是你在这个空间写入11或以上字节的数据,就是溢出。

            相同点:都会导致应用程序运行出现问题,性能下降或挂起。

            不同点:

                        1.内存泄露是导致内存溢出的原因之一;内存泄露积累起来将导致内存溢出。

                        2.内存泄露可以通过完善代码来避免;内存溢出可以通过调整配置来减少发生频率,但无法彻底避 免。

    参考地址:http://blog.csdn.net/donkor_/article/details/54970769

    相关文章

      网友评论

          本文标题:Java基础知识整理3——Android篇

          本文链接:https://www.haomeiwen.com/subject/dthhxxtx.html