通过反射直接获取Application对象

  public class AppGlobal {
  private static Application sApp;

          public static Application getApplication() {
          if (sApp == null) {
        try {
            sApp = (Application) Class.forName("android.app.ActivityThread")
                    .getMethod("currentApplication")
                    .invoke(null, (Object[]) null);
        } catch (IllegalAccessException | NoSuchMethodException | InvocationTargetException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    return sApp;
}

}

有些场景下,我们需要获取Application,查看android.app.ActivityThread的源码,

  public static Application currentApplication() {
      ActivityThread am = currentActivityThread();
     return am != null ? am.mInitialApplication : null;
  }

我们可以通过反射获取Application

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容