精华内容
下载资源
问答
  • 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

    展开全文
  • 无需上下文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 前几天接到一个需求,在自主开发的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传进去就可以了!!!

    展开全文
  • 如题 (ps:假设系统已经抛出了异常)
  • android获取当前活动(context

    千次阅读 2017-01-09 16:44:49
    Toast.makeText(getApplicationContext(), "发送广播成功", Toast.LENGTH_SHORT).show(); 用 getApplicationContext()
    1.             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"); 顺便判断个文件存在:
  • } } 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()
  • package 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:36
    SYS_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的ContextContext context = this.createPackageContext("包名", Context.CONTEXT_IGNORE_...
  • 当前用户使用的语言,包括当前数据库的字符集,并遵循如下格式: language_territory.characterset 52 NETWORK_...
  • 在用到fragment时无法使用.this来指定当前context内容,android开发中fragment获取context,可以使用getActivity().getApplicationContext(),来获取context内容; 转载于:...
  • 对于这些问题Yii2可以在视图层View中使用$this->context这个对象去获得。 示例:譬如现在(视图层登陆界面)login.php方法下面: <?php //得到Yii2的当前的控制器Controller echo $this->context->id; //输出结果:...
  • ${pageContext.request.contextPath}   转载于:https://www.cnblogs.com/wujixing/p/5600161.html
  • 在AndroidJUnit4直接通过getContext()获取到的context并不是当前APP的context,而是instrumentation的context,应使用以下方法来获取context。 InstrumentationRegistry.getInstrumentation().targetContext 或者...
  • 导读: 什么情况下需要使用全局上下文呢,情况有以下几点...获取context上下文的方法: 一、Activity.this 返回当前activity(活动)的上下文,属于activity ,activity销毁,上下文也就跟着销毁。 二、getApplic
  • 当前版本: 1.0.0-alpha11 写代码时想在click事件里弹个Toast,无奈发现如下这段代码无法通过编译,事实上是Compose里这种引用的写法是不支持的。 Button(onClick = { Toast.makeText(this@MainActivity, "哈哈...
  • 1、web server端获取上下文:Context ctx = WafContext.getInstance().getContext();上下文中包含当前登录组织、当前登录用户、语种、数据库、客户端地址等信息 2、web 浏览器端获取上下文:var ctx =waf....
  • 怎样在Fragment中获取context

    千次阅读 2017-04-04 15:05:44
    2.Activity.this的context 返回当前activity的上下文  3.getbasecontext() 返回由构造函数指定或setBaseContext()设置的上下文,如果你想从应用程序中的另一种情况下,您可以访问访问上下文。  4.getContex
  • 使用Yii2的时候,在某些场景和环境下需要获得Yii2目前所处于的module(模型)、Controller(控制器)、Action(方法),...对于这些问题Yii2可以在视图层View中使用$this->context这个对象去获得。下面通过示例代码给大家讲解下
  • //得到Yii2的当前的控制器Controller echo $this ->context->id; //输出结果:site //得到Yii2的当前的控制器Action echo $this ->context->action->id; //输出结果:login //得到Yii2的当前...
  • //得到Yii2的当前的控制器Controller echo $this->context->id; //输出结果:site //得到Yii2的当前的控制器Action echo $this->context->action->id; //输出结果:login //得到Yii2的当前的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,685
精华内容 674
关键字:

获取当前context