Android_四大组件总汇_为哥干货第一天

生命周期,数据传递,优缺点,使用场景。遇到过bug并解决

Activity生命周期:
            OnCreate():设置布局以及进行初始化操作
            OnStart():  可见
            OnResume():得到焦点
            onRestart():当Activity没有被销毁的时候重新调用这个Activity.
            onPause():失去焦点
            onStop():不可见
            onDestory():被销毁.

Fragment生命周期:
            onAttach() :Fragment关联Activity
            onCreate():
            onCreateView():当activity要得到fragment的layout时,调用 此方法,Fragment在其中创建自己的layout(界面)
            onActivityCreated():当activity的onCreated()方法返回后调用此方法
            onStart():界面可见
            onResume():获得焦点
            onPause():失去焦点
            onStop():界面不可见
            onDestroyView():当fragment中的视图被移除的时候,调用这个方法
            onDetach():当fragment和activity分离的时候,调用这个方法。 

数据传递:
            Activity和Fragment之间的数据传递可以使用Intent(意图),传递数据.
            Intent分为隐式意图和显示意图:
            显示意图场景:应用程序内部跳转时,效率高
            默认开启方式:用startActivity方法跳转
            隐式意图场景:开启另外一个应用程序页面时,效率低,需要去遍历所有应用程序的意图过滤器
            默认开启方式:被打开的activity A配置意图过滤器

区别:

Fragment用来描述一些行为或一部分用户界面在一个Activity中,你可以合并多个fragment在一个单独的activity中建立多个UI面板,同时重用fragment在多个activity中.你可以认为fragment作为一个activity中的一节模块 ,fragment有自己的生命周期,接收自己的输入事件,你可以添加或移除从运行中的activity.

遇到的BUG,以及解决方案:

ANR异常:Application not response 应用程序无响应
                产生原因:在主线程做了耗时的操作
    解决方法:引入Handler消息机制:
                子线程不能修改UI界面,修改UI界面需要在主线程完成,这样引入了handler消息机制 .
            代码步骤:
                    1.在主线程里,初始化Handler---------------------->Handler handler = new Handler
                    2.在子线程里初始化Message对象--------------->Message msg = Message.obtain();
                    3.设置msg的标识以及需要传递的值------------->msg.what=?  设置标识            
                                                                                                      msg.obj=? 设置值
                    4.利用Handler发送消息------------------------>handler.sendMessage(msg);
                    5.重写Handler里的handleMessage方法------->public void handleMessage(Message msg) {...}

Activity横竖屏切换问题
            产生原因:在activity横竖屏切换的时候默认是销毁当前的activity,然后重新初始化activity
            解决办法:
                        清单文件定死一个朝向--------------->android:screenOrientation="portrait"
                        配置configChanges,指定某些情况发生了不影响activity---->android:configChanges="keyboardHidden|screenSize|orientation"

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,699评论 25 708
  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-androi...
    eddy_wiki阅读 3,305评论 0 20
  • 面试题总结 通用 安卓学习途径, 寻找资料学习的博客网站 AndroidStudio使用, 插件使用 安卓和苹果的...
    JingBeibei阅读 1,723评论 2 21
  • 你对生活一无所知 生活于你宛如旧时 芭蕉绿 樱桃红 又是一年暮春风 木棉落 紫荆开 南国四时花不同 花开花落 云卷...
    梦花生阅读 135评论 2 6
  • 静谧是山峦的絮语 今朝的风有些沉默 只有雪在星空中散漫而来 不必讶异 时光自然的幻化四季 你的眼眸是承接着无边雪白...
    叶落岁暮阅读 219评论 0 2