很多时候需要得到当前Activity的实例和Activity的名称,下面给出实现下代码。

一、获取Activity的名字

1,首先需要获取权限

[html]  view plain copy
  1. <uses-permission android:name="android.permission.GET_TASKS" />

2,编写代码

[java]  view plain copy
  1. private static String getRunningActivityName(){
  2. ActivityManager activityManager=(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
  3. String runningActivity=activityManager.getRunningTasks(1).get(0).topActivity.getClassName();
  4. return runningActivity;
  5. }

二、获取当前Activity的实例

1,设置一个Activity的管理类

[java]  view plain copy
  1. public class TestActivityManager {
  2. private static TestActivityManager sInstance = new TestActivityManager();
  3. private WeakReference<Activity> sCurrentActivityWeakRef;
  4. private TestActivityManager() {
  5. }
  6. public static TestActivityManager getInstance() {
  7. return sInstance;
  8. }
  9. public Activity getCurrentActivity() {
  10. Activity currentActivity = null;
  11. if (sCurrentActivityWeakRef != null) {
  12. currentActivity = sCurrentActivityWeakRef.get();
  13. }
  14. return currentActivity;
  15. }
  16. public void setCurrentActivity(Activity activity) {
  17. sCurrentActivityWeakRef = new WeakReference<Activity>(activity);
  18. }
  19. }

2,编写一个MyApplication类,继承Application,在MyApplication中实现registerActivityLifecycleCallbacks回调,监听onActivityResumed()方法。

[java]  view plain copy
  1. <pre name="code" class="java">public class MyApplication extends Application {
  2. private static Context context;
  3. @Override
  4. public void onCreate() {
  5. context = getApplicationContext();
  6. registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
  7. @Override
  8. public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
  9. }
  10. @Override
  11. public void onActivityStarted(Activity activity) {
  12. }
  13. @Override
  14. public void onActivityResumed(Activity activity) {
  15. TestActivityManager.getInstance().setCurrentActivity(activity);
  16. }
  17. @Override
  18. public void onActivityPaused(Activity activity) {
  19. }
  20. @Override
  21. public void onActivityStopped(Activity activity) {
  22. }
  23. @Override
  24. public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
  25. }
  26. @Override
  27. public void onActivityDestroyed(Activity activity) {
  28. }
  29. });
  30. }
  31. public static Context getContext() {
  32. return context;
  33. }
  34. }

3,在AndroidManifest.xml中加入你写的MyApplication

[html]  view plain copy
  1. <application
  2. android:name="com.tes.MyApplication"
  3. android:allowBackup="true"
  4. </application>

4,实例,返回按钮,结束当前Activity

[java]  view plain copy
  1. BackBtn.setOnClickListener(new OnClickListener() {
  2. public void onClick(View v) {
  3. String activityName = getRunningActivityName();
  4. Log.d(TAG, activityName + " is finish");
  5. TestActivityManager.getInstance().getCurrentActivity().finish();
  6. }
  7. });

OK,就是这个样子的了,没什么特别的了,^_^

获取Activity的名字和类相关推荐

  1. 操作SD卡,获取文件目录及文件工具类Android,listView

    操作SD卡,获取文件目录及文件工具类Android 1.获取文件目录及文件工具类: DirectoryInfo  FileScan 1.1 DirectoryInfo: package com.gls ...

  2. 【IOC 控制反转】Android 事件依赖注入 ( 事件依赖注入具体的操作细节 | 获取 Activity 中的所有方法 | 获取方法上的注解 | 获取注解上的注解 | 通过注解属性获取事件信息 )

    文章目录 前言 一.获取 Activity 中的所有方法 二.获取方法上的注解 三.获取注解上的注解 四.通过注解属性获取相关事件信息 前言 Android 依赖注入的核心就是通过反射获取 类 / 方 ...

  3. java 获取包下的所有类,附完整源码和测试代码

    java 获取包下的所有类,完整Java代码如下: package com.example.demo.util;import java.io.File; import java.io.FileFilt ...

  4. Android中通过view.getContext获取Activity时得到TintContextWrapper的问题及解决public class MainActivity extends AppC

    这篇博客主要介绍Android在使用AppCompatActivity时遇到的一些出乎意料的问题,下面将问题及解决方案记录如下,便于查询. 问题 在使用Androidstudio开发中,默认创建的ac ...

  5. Py之Xlrd:Xlrd的使用方法总结(获取的sheet名字/sheet索引/sheet内容/数和列数、获取整行和整列的值(列表) 、指定单元格的内容/数据类型)之详细攻略

    Py之Xlrd:Xlrd的使用方法总结(获取的sheet名字/sheet索引/sheet内容/数和列数.获取整行和整列的值(列表) .指定单元格的内容/数据类型)之详细攻略 目录 Xlrd的使用方法总 ...

  6. c获取文件的名字和运行到程序的第几行功能

    可以通过__FILE__和__LINE__两个宏获取文件的名字和代码运行的行数 #include<stdio.h> int main(){printf("file:%s line ...

  7. 获取class的名字

    ele = str.get_attribute('class')(获取class的名字) 转载于:https://www.cnblogs.com/zero-77/p/8482362.html

  8. 一个简单的C#获取Session、设置Session类文件

    一个简单的C#获取Session.设置Session类文件,本类主要实现大家最常用的两个功能: 1.GetSession(string name)根据session名获取session对象: 2.Se ...

  9. 微信 获取wx.config 参数 基类

    微信 获取wx.config 参数 基类 原文:微信 获取wx.config 参数 基类 using System; using System.Collections.Generic; using S ...

最新文章

  1. 一文教会你写90%的shell脚本!
  2. aws iot 连接时间_AWS IoT Core 定价
  3. 适合新手入门的漏洞调试与分析—CVE-2010-3333
  4. GET_GLOBALS_FROM_SLVC_FULLSCR
  5. 什么是Shell,Shell教程
  6. Android JNI和NDK学习(5)--JNI分析API
  7. ASP.NET Core Logging in Elasticsearch with Kibana
  8. 步步高告诉你如何获客增长:4种数字化驱动案例
  9. 点击微信公众号菜单发送图片或文本
  10. 计算机应用高级教程,大学计算机应用高级教程(第3版)简介,目录书摘
  11. CV领域论文查找方法
  12. 会员卡应用管理系统源码 支持收银+积分管理+商城营销功能 含详细搭建教程
  13. Markdown/KaTeX/LaTeX语法、工具及模板大全(持续更新ing...)
  14. FIFO先进先出,FILO先进后出
  15. luogu P1600 天天爱跑步
  16. 在内容创作领域,为什么李筱懿如此成功?
  17. arm-linux移植zmodem命令lrz,lsz
  18. 智能用户增长: 一站式的消费者资产管理和运营平台
  19. 大文件的传输方案(scp以及文件切割)
  20. mysql属于dql语句的是_mysql学习日记——DQL语句

热门文章

  1. 接口调试工具 --谷歌插件 API Tester
  2. SQL事务回滚的两种方式
  3. 【干货】有效的项目绩效管理评估,能成为组织成长的引擎
  4. 【自动化测试】自动化测试框架与工具
  5. LIO-SAM框架:点云匹配前戏之初值计算及局部地图构建
  6. 使用python 将excel中数据批量生成word周报
  7. LeetCode-226-反转二叉树
  8. linux查看所有用户家目录,linux – 允许用户读取其他用户的主目录
  9. Shell常用命令与工具(一)
  10. XYNUOJ 1246: Repair the Wall 贪心水题 酒馆浪人的博客