package cn.alphabets.light.network; import android.app.Application; import java.lang.reflect.Method; /** * Context实例获取器, Android4.x以后可用. * 注意,该方法未被正式文档化. * Created by lin on 14/11/30. */ public class ContextManager { private static final String THREAD_NAME = "android.app.ActivityThread"; private static final String METHOD_NAME = "currentApplication"; private static Application context; /** * 获取Application实例 * @return Application实例 */ public static Application getInstance() { if (context != null) { return context; } try { final Class<?> activityThread = Class.forName(THREAD_NAME); final Method method = activityThread.getMethod(METHOD_NAME); context = (Application) method.invoke(null, (Object[]) null); } catch (final Exception e) { throw new RuntimeException("Failed to get application instance."); } return context; } }