Android获取Context(任意位置任意地方,全局上下文)
一般获取context的方法
1.Activity.this的context
(一般用法)返回当前activity的上下文,属于activity ,activity 摧毁他就摧毁
2.getApplicationContext()
返回应用的上下文,生命周期是整个应用,应用摧毁它才摧毁
3.getBaseContext()
返回由构造函数指定或setBaseContext()设置的上下文
4.getActivity()
多用于fragment中
但是问题来了!
一般方法在一般的地方都能获取,但是特殊的地方呢,上述情况都不太管用了,如工具类。但是有时过多时就会觉得过于频繁。那么有什么一劳永逸的方法,答案就是使用自定义Application。
废话少说,上干货!
自定义Application步骤:
1.写一个新的类继承Application,代码如:
/**
* Author: ZhouJianbin周健彬
*/
public class MyApplication extends Application {<span style="color:#cc7832;">private static </span>Context <span style="color:#9876aa;"><em>context</em></span><span style="color:#cc7832;">;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
initXunFei();
}
/**
* 获取全局上下文*/
public static Context getContext() {
return context;
}
}
2.添加在manifest中<application>中加入android:name="MyApplication"
<application
android:name="MyApplication" >
3.然后使用只要需要context但又获取不得或获取麻烦的话,只要使用:
MyApplication.getContext()
注意:最好是在不得已的情况下使用上述方法来获取context,而不是只要用到context就使用MyApplication.getContext(),因为这涉及到View等存在生命周期的问题。如toast要用到的context就要使用Activvity.this,否则可能报错。(题外话:如果这么容易被代替,google又不是傻子,早就淘汰了)
转载请注明出处,谢谢!
Android获取Context(任意位置任意地方,全局上下文)的更多相关文章
- android获取Context
如果在Activity方法中,直接使用this. 如果在Activity内部类中,使用Activity.this
- 在任意位置获取应用程序CONTEXT
Android程序中访问资源时需要提供Context,一般来说只有在各种component中(Activity, Provider等等)才能方便的使用api来获取Context, 而在某些工具类中要获 ...
- Android 全局获取 Context 与使用 Intent 传递对象
=====================全局获取 Context======================== Android 开发中很多地方需要用到 Context,比如弹出 Toast.启动活 ...
- Android 如何全局获取Context
有时,在处理业务逻辑的时候,需要Context对象,但在某些情况下,并非容易获取,这时就需要一些巧妙的手段来管理Context. 在Android中,提供了一个类Application,当应用程序启动 ...
- Android点击其他任意位置收起软键盘
在Android应用开发中,经常出现这样的需求,用户在输入文字的过程中,可能不想继续输入了,通过滑动或者点击其他位置(除软键盘和EditText以外的任何位置),希望能够自动收回键盘,这个功能可能有些 ...
- Android开发之全局获取Context的技巧
转自<第一行代码-Android>进阶篇 这本书对于入门来说确实很棒,很简单明了的介绍了Android开发中涉及到的方方面面,对我的帮助很大,同时记录一些该书中一些对我以后开发有用的东西, ...
- Android获取全局Context的方法
Android获取全局Context的方法 Android--应用全局获取Context - 超宇的博客 - CSDN博客https://blog.csdn.net/chaoyu168/article ...
- Android 获取全局Context的技巧
回想这么久以来我们所学的内容,你会发现有很多地方都需要用到Context,弹出Toast的时候需要.启动活动的时候需要.发送广播的时候需要.操作数据库的时候需要.使用通知的时候需要等等等等.或许目前你 ...
- android#全局获取Context的技巧
参考<第一行代码>——郭霖 回想这么久以来我们所学的内容,你会发现有很多地方都需要用到Context,弹出Toast的时候需要.启动活动的时候需要.发送广播的时候需要.操作数据库的时候需要 ...
随机推荐
- Redis实现Mybatis的二级缓存
一.Mybatis的缓存 通大多数ORM层框架一样,Mybatis自然也提供了对一级缓存和二级缓存的支持.一下是一级缓存和二级缓存的作用于和定义. 1.一级缓存是SqlSession级别的缓存.在操作 ...
- (素材源代码) 猫猫学IOS(五)UI之360等下载管理器九宫格UI
猫猫分享,必须精品 先看效果 代码学习地址: 猫猫学IOS(五)UI之360等下载管理器九宫格UI 猫猫学IOS(五)UI之360等下载管理器九宫格UI http://blog.csdn.net/u0 ...
- vim编辑器经常使用命令
高级一些的编辑器,都会包括宏功能,vim当然不能缺少了.在vim中使用宏是很方便的: :qx 開始记录宏,并将结果存入寄存器xq 退出记录模式@x 播放记录在x寄存器中的宏命令 ...
- Datasets for MachineLearning
Public datasets for machine learning http://homepages.inf.ed.ac.uk/rbf/IAPR/researchers/MLPAGES/mld ...
- swift Reflection(字典转模型)变量继承本类类名解决办法
class IWStatus: Reflect { var source: NSString! var created_at: NSString! var idstr: NSString! var u ...
- keil出现一些库函数没有定义
- error app/styles/components/iconfont.scss (Line 12: Invalid GBK character "\xE5")
因为要用到iconfont,引入iconfont到sass文件后,出现编译sass文件错误,如下截图: 解决方法:在顶部设置编码格式 @charset "utf-8"; 编译成功!
- UVA 10917 Walk Through the Forest SPFA
uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem= ...
- iOS:实现图片的无限轮播---之使用第三方库SDCycleScrollView
SDCycleScrollView API // // SDCycleScrollView.h // SDCycleScrollView #import <UIKit/UIKit.h> ...
- struts2注入类
struts2是能够注入一个对象的,那么一定须要继承ModelDriven的泛型接口. package com.test.action; import com.opensymphony.xwork2. ...