Android面试(一)?(内存泄露,Activity生命周期,横竖屏切换,Activity设为窗口,安全退出Activity,)


1:内存泄露:

    原因;(1):持有Context引用造成泄漏

            (2):非静态类内部类引发的泄漏

            (3):后台线程操作引发的泄漏

            (4):线程之间通过Handler通信引起的泄漏

            (5):ListAdapter的getView()函数没使用convertView

            (6):Bitmap对象没使用时,用recycle()方法回收内存

            (7):Cursor游标未关闭

   危害:

          (1):内存变小 (2):程序卡顿(3):退出(4):用户流失

   排查:

         (1):统计平台oom  (2):内存分析工具 (3):修复

  LeakCanary工具:

          (1):测每个界面  (2):有泄漏会toast一下,解决。  (3):完成

2:Activity的生命周期:‘

          onCreate():创建Activity是调用。

          onStart():activity变为在屏幕上对用户可见时调用。

         onResume():activity开始与用户交互时使用。

         onPause():activty被暂停或回收cpu和其他资源时调用。

        onStop();activity转为不可见阶段时及后续的生命周期。

       onRestart():重启activity时调用,在栈中。

       onDestroy();被完全从系统内存中移出时调用。

3:横竖屏切换时Activity的生命周期:

    情况1:不设置Activity的android:ConfigChange时,切屏会重新调用各个生命周期,切横屏执行一次,竖屏2次。

   情况2:设置Activity的android:ConfigChange="orgentation"切横屏竖屏都会执行一次。

   情况3:android:ConfigChange="orgentation"|keyboardHidden切屏不会调用各个生命周期,只会执行onConfigurationChanged方法

4:如何让将一个Activity设置成窗口的样式?

    方法1:在styles.xml文件,新建Dialog的Style

                        <styles name = "Theme.FloatActivity" parent = "android:style/Theme.Dialog"></style>

    方法2:在主配置清单中,需要窗口的activity中添加属性,android:theme = "@style/Theme.FloatActivity"

 5:如何安全退出Activity?

    (1):finish

     (2):记录打开的每个Activity,退出时关闭每个Activity

    (3):发送特定的广播,每个Activity收到广播时关闭即可。








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值