Android开发之通过反射获取全局的application
生活随笔
收集整理的這篇文章主要介紹了
Android开发之通过反射获取全局的application
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
直接上代碼
方法一:
package cn.xiayiye5.xiayiye5library.utils;import android.annotation.SuppressLint; import android.app.Application;/*** @author : xiayiye5* @date : 2021/1/15 18:20* 類描述 : 通過反射獲取全局的application*/ public class XiaYiYe5Utils {private static final XiaYiYe5Utils APPLICATION_UTILS = new XiaYiYe5Utils();private XiaYiYe5Utils() {}public static XiaYiYe5Utils getInstance() {return APPLICATION_UTILS;}private Application currentApplication;/*** 獲取全局的application** @return 返回application*/@SuppressLint("PrivateApi")public Application getNewApplication() {try {if (currentApplication == null) {currentApplication = (Application) Class.forName("android.app.ActivityThread").getMethod("currentApplication").invoke(null, (Object[]) null);}return currentApplication;} catch (Exception e) {e.printStackTrace();}return null;} }方法二:請自行驗證
import android.app.Application;/*** 2018/11/8.*/ public class EnContext {private static final Application INSTANCE;static {Application app = null;try {app = (Application) Class.forName("android.app.AppGlobals").getMethod("getInitialApplication").invoke(null);if (app == null)throw new IllegalStateException("Static initialization of Applications must be on main thread.");} catch (final Exception e) {e.printStackTrace();try {app = (Application) Class.forName("android.app.ActivityThread").getMethod("currentApplication").invoke(null);} catch (final Exception ex) {e.printStackTrace();}} finally {INSTANCE = app;}}public static Application get() {return INSTANCE;} }項目源碼:反射獲取全局application的工具類
總結
以上是生活随笔為你收集整理的Android开发之通过反射获取全局的application的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小行星采样返回!天问二号任务已获得国家批
- 下一篇: 85%的国产电脑公开亮相!x86处理器