android中获取当前Activity的实例和名字
16lz
2021-01-25
很多时候需要得到当前Activity的实例和Activity的名称,下面给出实现下代码。
一、获取Activity的名字
1,首先需要获取权限
2,编写代码 private static String getRunningActivityName(){ ActivityManager activityManager=(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); String runningActivity=activityManager.getRunningTasks(1).get(0).topActivity.getClassName(); return runningActivity; }
1,设置一个Activity的管理类
public class TestActivityManager { private static TestActivityManager sInstance = new TestActivityManager(); private WeakReference sCurrentActivityWeakRef; private TestActivityManager() { } public static TestActivityManager getInstance() { return sInstance; } public Activity getCurrentActivity() { Activity currentActivity = null; if (sCurrentActivityWeakRef != null) { currentActivity = sCurrentActivityWeakRef.get(); } return currentActivity; } public void setCurrentActivity(Activity activity) { sCurrentActivityWeakRef = new WeakReference(activity); }}
2,编写一个MyApplication类,继承Application,在MyApplication中实现registerActivityLifecycleCallbacks回调,监听onActivityResumed()方法。
public class MyApplication extends Application {private static Context context;@Overridepublic void onCreate() {context = getApplicationContext();registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {@Overridepublic void onActivityCreated(Activity activity, Bundle savedInstanceState) {}@Overridepublic void onActivityStarted(Activity activity) {}@Overridepublic void onActivityResumed(Activity activity) {TestActivityManager.getInstance().setCurrentActivity(activity);}@Overridepublic void onActivityPaused(Activity activity) {}@Overridepublic void onActivityStopped(Activity activity) {}@Overridepublic void onActivitySaveInstanceState(Activity activity, Bundle outState) {}@Overridepublic void onActivityDestroyed(Activity activity) {}});}public static Context getContext() {return context;}}
3,在AndroidManifest.xml中加入你写的MyApplication
4,实例,返回按钮,结束当前Activity
BackBtn.setOnClickListener(new OnClickListener() {public void onClick(View v) {String activityName = getRunningActivityName(); Log.d(TAG, activityName + " is finish"); TestActivityManager.getInstance().getCurrentActivity().finish();}});
OK,就是这个样子的了,没什么特别的了,^_^
更多相关文章
- 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
- Android(安卓)Studio - 快捷键详解-MAC版
- Android(安卓)- 数据存储(一)之 SharedPreferences
- android 复制 粘贴 剪切功能应用
- android 系统级别开发环境搭建
- android可重复利用的自定义提示确认框
- Android模拟翻书效果
- 【android】错误集锦及解决办法
- Android之MediaPlayer播放音乐并实现进度条实例