博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(一)仅仅用ApplicationContext加载界面
阅读量:7014 次
发布时间:2019-06-28

本文共 1030 字,大约阅读时间需要 3 分钟。

  需求描述:我需要在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 )

  

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

从Toast的Context点进去。

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

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

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

转载于:https://www.cnblogs.com/shoneworn/p/8527235.html

你可能感兴趣的文章
ArrayIndexOutOfBoundsException
查看>>
JAVA判断各种类型数据是否为空
查看>>
Vim for Rails developers: Lazy modern configuration
查看>>
2017阿里,百度,京东java面试+笔试大合集,这些面试题你都会吗?
查看>>
JavaScript数据结构03 - 队列
查看>>
笔记-OC运行时问题扩展
查看>>
PHPstorm 优化、设置与提速篇
查看>>
[iOS] 从 application delegate 引申三点
查看>>
深入理解Java虚拟机(一)
查看>>
实战Android 上推下拉——隐藏、显示ActionBar
查看>>
PowerShell 多线程测试IP端口
查看>>
使用SQL Server 2008 Extended Events SSMS Addin轻松管理XEvents
查看>>
Django-celery 安装及使用测试
查看>>
优秀UML制图开源工具--ArgoUML
查看>>
没有服务台,就没有ITSM
查看>>
加点自已内容的新内核下L7-FILTER的应用实例!
查看>>
QQ-weiyun(微云)-云储存
查看>>
微信公众帐号开发教程第3篇-开发模式启用及接口配置(转)
查看>>
.NET项目web自动化测试实战——Selenium 2.0
查看>>
Asp.Net SignalR - 持久连接类
查看>>