zoukankan      html  css  js  c++  java
  • (一)仅仅用ApplicationContext加载界面

      需求描述:我需要在SDK中加载一个界面,界面是一次性的,不可见的,加载完后,获取到值,就立马销毁的。而客户端只能提供给你一个ApplicationContext。

      通常,我们的界面加载都是在Activity中完成的。通过setContentView()来完成,或者通过LayoutInflater来加载。也或者通过addview的方式,将其依附到一个能被加载到的布局中去。但是,我们这里,不能这样做。

      那么就从能得到的ApplicationContext 来分析一下。来看看activity的Context能干的事,ApplicationContext还能不能干?

      

      大家注意看到有一些NO上添加了一些数字,其实这些从能力上来说是YES,但是为什么说是NO呢?下面一个一个解释:
        数字1:启动Activity在这些类中是可以的,但是需要创建一个新的task。一般情况不推荐。
        数字2:在这些类中去layout inflate是合法的,但是会使用系统默认的主题样式,如果你自定义了某些样式可能不会被使用。
        数字3:在receiver为null时允许,在4.2或以上的版本中,用于获取黏性广播的当前值。(可以无视)
        注:ContentProvider、BroadcastReceiver之所以在上述表格中,是因为在其内部方法中都有一个context用于使用。
      

      大家发现没有,好像Application的Context ,设计到界面的,都是NO呀?是的,图中展示给你的都是NO,但是,想一想,是不是漏掉了一个?什么东西?

      Toast ,最常用的,往往也是最容易忽略的。

      一起看看Toast为什么可以(去翻api http://www.android-doc.com/reference/android/widget/Toast.html

      

    用来这么久,你知道Toast是可以自己随便定义View的吗?有了这个,那还得确认Toast,能不能被Application的Context调用起来。再去翻API, 其实也可以手动做实验验证。

    从Toast的Context点进去。

    看到没?Application的Context是支持的。也就是说,我们这个需求,用Toast就可以来完成界面加载。

    我这边的需求是,加载一个webview,由Webveiw来读取一些值。取值完成后,就销毁。

    你也可以根据自己需要,来定制。

  • 相关阅读:
    JS常见异常
    Spring boot 的 @Value注解读取配置文件中的00开头的字符串
    常用网址
    IntelliJ使用教程
    eclipse
    swagger
    Mybatis
    Linux常用命令
    阿里云短信
    Flink Checkpoint-轻量级分布式快照
  • 原文地址:https://www.cnblogs.com/shoneworn/p/8527235.html
Copyright © 2011-2022 走看看