-
android获取全局context
2017-09-12 15:24:50一般获取context的方法 1.Activity.this的context (一般用法)返回当前activity的上下文,属于activity ,activity 摧毁他就摧毁 2.getApplicationContext() 返回应用的上下文,生命周期是整个应用,...一般获取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 { private static Context context; @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又不是傻子,早就淘汰了)
转载请注明出处,谢谢!
转自:http://blog.csdn.net/zjb369542423/article/details/50719046
-
Android无需上下文context获取当前Application和Resources
2020-09-23 20:18:26无需上下文context获取当前Application Android使用反射获取当前Application 没有Activity,没有Application,快速获取当前应用的Application。当个工具类用,再也不烦恼,目前在Android Q上并且是targetSdk为29也能...无需上下文context获取当前Application
Android使用反射获取当前Application
没有Activity,没有Application,快速获取当前应用的Application。当个工具类用,再也不烦恼,目前在Android Q上并且是targetSdk为29也能获取到,已验证可用。/** * 获取当前应用的Application * 先使用ActivityThread里获取Application的方法,如果没有获取到, * 再使用AppGlobals里面的获取Application的方法 * @return */ public static Application getCurApplication(){ Application application = null; try{ Class atClass = Class.forName("android.app.ActivityThread"); Method currentApplicationMethod = atClass.getDeclaredMethod("currentApplication"); currentApplicationMethod.setAccessible(true); application = (Application) currentApplicationMethod.invoke(null); Log.d("fw_create","curApp class1:"+application); }catch (Exception e){ Log.d("fw_create","e:"+e.toString()); } if(application != null) return application; try{ Class atClass = Class.forName("android.app.AppGlobals"); Method currentApplicationMethod = atClass.getDeclaredMethod("getInitialApplication"); currentApplicationMethod.setAccessible(true); application = (Application) currentApplicationMethod.invoke(null); Log.d("fw_create","curApp class2:"+application); }catch (Exception e){ Log.d("fw_create","e:"+e.toString()); } return application; }
无需上下文context获取当前Resources
没有Activity,没有Application,快速获取当前应用的Resources 。当个工具类用,再也不烦恼,目前在Android Q上并且是targetSdk为29也能获取到,已验证可用。
public static Resources getResources(){ Resources resources = Resources.getSystem(); return resources; }
-
Android反射获取aar包中application,并赋值当前Context
2019-09-10 10:08:54Android反射获取aar包中application,并赋值当前Context 前几天接到一个需求,在自主开发的SDK中接入其他的项目,而其他的项目是打成了aar包,需要把Context传入到aar中,让该aar包中调用该SDK的Context,原本双方...前几天接到一个需求,在自主开发的SDK中接入其他的项目,而其他的项目是打成了aar包,需要把Context传入到aar中,让该aar包中调用该SDK的Context,原本双方写一个接口传递就可以了,但是该项目不愿意动任何代码,这个时候就另开一种途径,通过反射获取aar包中的Context值,并赋值当前的Context.
不说了上代码:
public class ContextUtil { /** * 通过反射把context赋值给支付的MyApplication * 首先进行attach,然后再调用onCreate方法初始化 * @return Context */ public static void setContext(Context context) { Context appContext = new ContextThemeWrapper(context,android.R.style.Theme); //aar包中的application MyApplication myApplication = new MyApplication(); try { Method sAttachBaseContextMethod = Application.class.getDeclaredMethod("attach",Context.class); sAttachBaseContextMethod.setAccessible(true); sAttachBaseContextMethod.invoke(myApplication,appContext); //先attach myApplication.onCreate();//在调用onCreate }catch (Throwable e){ Log.e("errorMessage",e.toString()); } } }
通过上面的注释就可以看懂了,最后就是在初始化的地方,把Context传进去就可以了!!!
-
mvc中如何获取当前ExceptionContext
2013-12-20 22:18:07如题 (ps:假设系统已经抛出了异常) -
android获取当前活动(context)
2017-01-09 16:44:49Toast.makeText(getApplicationContext(), "发送广播成功", Toast.LENGTH_SHORT).show(); 用 getApplicationContext()- Toast.makeText(getApplicationContext(), "发送广播成功", Toast.LENGTH_SHORT).show();
用 getApplicationContext() -
hadoop获取context的当前输出路径,
2013-06-07 21:19:47我想看一下路径,然后判断文件是否存在?你妹的,真麻烦? 找个半天,用import org.apache.hadoop.io.MapFile;...String name =context.getConfiguration().get("mapred.output.dir"); 顺便判断个文件存在: -
通过反射获取当前Activity实例,获取当前Activity 或者Application(解决不同机型context获取失败问题)
2020-10-16 09:53:47} } static Context getTopActivityOrApp() { if (isAppForeground()) { Activity topActivity = ACTIVITY_LIFECYCLE.getTopActivity(); return topActivity == null ? AppUtils.getApp() : topActivity; } else { ... -
Fragment获取context
2016-01-22 21:59:22当前的Fragment的context获取方法 自己定义的Fragment同样Myadapter myadapter = new Myadapter(images, names, signs, this.getActivity());this.getActivity() -
通过反射获取当前应用的Application、Context
2020-04-27 18:00:56package sc.tools; import java.lang.reflect.Field; import java.lang.reflect.Method; import android.app.Application;...import android.content.Context; import android.content.pm.ApplicationInfo; import... -
SYS_CONTEXT函数,获取当前连接信息
2016-03-07 23:00:36SYS_CONTEXT('USERENV','ACTION') ACTION, SYS_CONTEXT('USERENV','AUDITED_CURSORID') AUDITED_CURSORID, SYS_CONTEXT('USERENV','AUTHENTICATED_IDENTITY') AUTHENTICATED_IDENTITY, SYS_CONTEXT('USER -
Android获取Context的方法
2016-07-30 16:37:01开发时遇到这样一个问题,当前app需要读取其他app中的资源,如shared_prep中保存的共享数据,这时候需要获取其他app的Context。 Context context = this.createPackageContext("包名", Context.CONTEXT_IGNORE_... -
sys_context获取当前会话的属性
2014-11-18 15:55:53当前用户使用的语言,包括当前数据库的字符集,并遵循如下格式: language_territory.characterset 52 NETWORK_... -
android开发中fragment获取context
2016-03-19 09:36:00在用到fragment时无法使用.this来指定当前context内容,android开发中fragment获取context,可以使用getActivity().getApplicationContext(),来获取context内容; 转载于:... -
Yii2使用$this-context获取当前的Module、Controller(控制器)、Action等
2020-12-20 02:43:35对于这些问题Yii2可以在视图层View中使用$this->context这个对象去获得。 示例:譬如现在(视图层登陆界面)login.php方法下面: <?php //得到Yii2的当前的控制器Controller echo $this->context->id; //输出结果:... -
获取当前路径 ${pageContext.request.contextPath}
2016-06-20 12:00:00${pageContext.request.contextPath} 转载于:https://www.cnblogs.com/wujixing/p/5600161.html -
Android单元测试中AndroidJUnit4获取context
2018-10-08 17:40:20在AndroidJUnit4直接通过getContext()获取到的context并不是当前APP的context,而是instrumentation的context,应使用以下方法来获取context。 InstrumentationRegistry.getInstrumentation().targetContext 或者... -
Android添加全局上下文获取Context
2020-11-06 15:00:07导读: 什么情况下需要使用全局上下文呢,情况有以下几点...获取context上下文的方法: 一、Activity.this 返回当前activity(活动)的上下文,属于activity ,activity销毁,上下文也就跟着销毁。 二、getApplic -
Android Compose中获取Context
2021-02-23 17:21:57当前版本: 1.0.0-alpha11 写代码时想在click事件里弹个Toast,无奈发现如下这段代码无法通过编译,事实上是Compose里这种引用的写法是不支持的。 Button(onClick = { Toast.makeText(this@MainActivity, "哈哈... -
前后台获取上下文context
2016-10-31 19:33:001、web server端获取上下文:Context ctx = WafContext.getInstance().getContext();上下文中包含当前登录组织、当前登录用户、语种、数据库、客户端地址等信息 2、web 浏览器端获取上下文:var ctx =waf.... -
怎样在Fragment中获取context
2017-04-04 15:05:442.Activity.this的context 返回当前activity的上下文 3.getbasecontext() 返回由构造函数指定或setBaseContext()设置的上下文,如果你想从应用程序中的另一种情况下,您可以访问访问上下文。 4.getContex -
Yii2使用$this->context获取当前的Module、Controller(控制器)、Action等
2020-10-20 02:17:41使用Yii2的时候,在某些场景和环境下需要获得Yii2目前所处于的module(模型)、Controller(控制器)、Action(方法),...对于这些问题Yii2可以在视图层View中使用$this->context这个对象去获得。下面通过示例代码给大家讲解下 -
Yii2使用$this->context获取当前的Module/Controller/Action
2018-06-13 13:54:00//得到Yii2的当前的控制器Controller echo $this ->context->id; //输出结果:site //得到Yii2的当前的控制器Action echo $this ->context->action->id; //输出结果:login //得到Yii2的当前... -
Yii2视图 使用$this->context获取当前的Module、Controller(控制器)、Action等
2018-10-27 15:31:00//得到Yii2的当前的控制器Controller echo $this->context->id; //输出结果:site //得到Yii2的当前的控制器Action echo $this->context->action->id; //输出结果:login //得到Yii2的当前的...
-
Galera 高可用 MySQL 集群(PXC v5.7+Hapro)
-
Qt实现音乐播放器 TTKMusicPlayer v2.14.0.0
-
Web安全测试操作指导书_华为v1.0.doc
-
peewee的使用与异步peewee-async在tornado中的使用总结
-
课程题目汇总
-
大数四则运算模板
-
安全大讲堂之大数据安全培训系列文档.zip
-
设计模式简介
-
捕获异常VS抛出异常
-
PC桌面版本的APP网页内容收集分析管理工具
-
2020-12-02版的带桌面树莓派系统镜像
-
3389端口抓鸡工具
-
3.定时器中断延时.rar
-
Go 函数选项模式
-
22ssh弱口令爆破带扫描
-
9080端口爆破工具
-
NFS 实现高可用(DRBD + heartbeat)
-
五种去掉免费空间广告的方法
-
2021年 系统架构设计师 系列课
-
当前元素不进行 flex分配