zoukankan      html  css  js  c++  java
  • android Context 上下文的几点解析

    1.首先什么是context?

    文档语焉不详,说是resource什么的,反正是没看懂,实际上可以认为它是一个指向parent对象的指针,受到那个parent对象的控制。

    2.为什么需要context?

    试想一下这个语句:

    Button myButton =newButton(this);

    这个this就是context,前面说了它指向了parent对象,那指向了哪里?为什么需要这么做?原因是Button为了能完成自己的使命(响应各种操作)就得让Android系统知道自己是属于哪个Activity的,这个信息是必须的,因为只有这样Android系统才会对其进行管理,比如响应onClick()事件,否则系统连Button是属于哪个Activity的都不知道,怎么响应呢?如果ButtoncontextActivitycontext是一样的,那么它们都是可见的,比如上面那个buttonActivity一样是可见的,它们的context指向另一个不可见的对象,也就是它们受那个不可见的对象控制,我理解为系统。

    3.Application contextActivity context

    这是两种不同的context,也是最常见的两种。第一种中context的生命周期与Application的生命周期相关的,context随着Application的销毁而销毁,第二种中的contextActivity的生命周期是相关的,但是对一个Application来说,Activity可以销毁几次,那么属于Activitycontext就会销毁多次。至于用哪种context,得看应用场景,个人感觉用Activitycontext好一点,不过也有的时候必须使用Applicationcontext

     

    4、什么时候创建Context实例 

          熟悉了Context的继承关系后,我们接下来分析应用程序在什么情况需要创建Context对象的?应用程序创建Context实例的

     

     情况有如下几种情况:

     

          1、创建Application 对象时, 而且整个App共一个Application对象

     

          2、创建Service对象时

     

          3、创建Activity对象时

     

  • 相关阅读:
    获取本机外网ip和内网ip
    服务器发布MVC常见问题解决方案
    Ext.Net学习笔记01:在ASP.NET WebForm中使用Ext.Net
    Form验证(转)
    各浏览器各版本User-agent汇总 欢迎补充
    MSSQL中把表中的数据导出成Insert
    发布mvc3的项目时system.web.mvc 版本 为3.0.0.1高于服务器版本3.0.0.0 升级到3.0.0.1
    MySQL Packets larger than max_allowed_packet are not allowed
    SQL查看数据库所用用户表数量和使用的空间
    公用提示对话框
  • 原文地址:https://www.cnblogs.com/ycxyyzw/p/2950919.html
Copyright © 2011-2022 走看看