Application和四大组件、NIO(non-blocking IO 非阻塞线程的IO) 以及Android Studio恢复(误删除文件或文件夹)

知识点一、

           Application和四大组件启动时的方法顺序和相关注意事项:

           1. 调用流程为: Application 的 attachBaseContext ---> ContentProvider 的 onCreate ----> Application 的 onCreate ---> Activity、Service 等的 onCreate(Activity 和 Service 不分先后);

           问题一:ContentProvider 的 onCreate 一定是优先于 Application 的 onCreate 执行的吗?

           结论:确实是在 ContentProvider 的 onCreate 执行完成之后,才会执行 Application 的 onCreate 的。

           问题二:ContentProvider中 的 call方法 是在 Application 的 onCreate 执行完之后才执行的吗?

           结论:Application 的 onCreate方法 和 Provider 的 call方法 不是顺序执行,而是会同时执行。

          问题三:有比 Application 的 attachBaseContext方法 更早执行的方法吗?

          结论:Application 的构造方法早于 Application 的 attachBaseContext方法 调用。
  那么有没有比 Application 的构造方法还早被调用的方法呢?有,自己可以再想想哦。
         

          “坑”一:在 attachBaseContext方法 中使用 getApplicationContext方法 返回null;
解决方法:如果在 attachBaseContext方法 中要使用 context 的话,那么使用 this 吧;

          “坑”二:在 Application 的 attachBaseContext方法 中,去调用自身的 ContentProvider,那么这个 ContentProvider 会被初始化两次,也就是说这个 ContentProvider 会被两次调用到onCreate。如果你在 ContentProvider 的 onCreate 中有一些逻辑,那么一定要检查是否会有影响。

知识点二、          

                          NIO(non-blocking IO 非阻塞线程的IO)

Channel :  可以和原来的Stream类比, 但是有个关键区别, 那就是通过Channel 读写数据,是非阻塞的, 一个socket 也是Channel 的一种。


Buffer :  通过Channel 读写的数据都在Buffer 中, 由于Buffer 不是流, 你读到Buffer 尾部以后还可以从头再读。


Selector :  和Channel配合使用, Channel 可以把自己注册到Selector当中, 告诉Selector 说, 我要监听XXX事件, 这是一个线程管理多个Channel的关键。


Android studio如何恢复误删的文件或者文件夹?


错误:当你一不小心或者脑抽删除(delete)了一个文件,或者更脑抽的delete你的module之后?
解决:1、在你项目的最上层project目录点击右键;
     2、选项里面有一个Local History选择show history
     3、选择你想恢复的,如果找不到,可以通过右上角搜索,找到之后,点击左上角的revert恢复就哦了!!!


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值