很多时候需要得到当前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;                 }


二、获取当前Activity的实例

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,就是这个样子的了,没什么特别的了,^_^



更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. Android(安卓)Studio - 快捷键详解-MAC版
  3. Android(安卓)- 数据存储(一)之 SharedPreferences
  4. android 复制 粘贴 剪切功能应用
  5. android 系统级别开发环境搭建
  6. android可重复利用的自定义提示确认框
  7. Android模拟翻书效果
  8. 【android】错误集锦及解决办法
  9. Android之MediaPlayer播放音乐并实现进度条实例

随机推荐

  1. Android(安卓)Studio 工程报错问题积累总
  2. Android(安卓)指定销毁一个Activity
  3. Android(安卓)oom pthread_create (1040K
  4. Android(安卓)P 横屏 部分应用宽度未占满
  5. android --相机使用详解概述
  6. 2011年沈大海讲师Android的新浪微博客户
  7. Android:使用JDBC链接MySQL数据库
  8. Android(安卓)中Activity,Window和View之
  9. Android(安卓)透明式系统栏设计
  10. Android尺寸标注设计大全和Android切图规