Android中的任务等等都是通过栈来管理的,Activities的管理也不例外。它的先进后出特性让Android可以很容易实现从当前Activity回到或者重新启动先前的Activity。
(注:当系统资源匮乏的时候,系统会释放先前Activity占用资源,因此当从当前Activity返回先前的Activity的时候,先前的Activity会被重新创建)
、简单的说,回到先前的Activity本质就是删除当前的Activity,让先前的Activity变成Activities栈的栈顶。可以这么说,当前运行的活动的Activity就是Activities栈顶的那个Activity。
第一种方法获取的是父类的Activity名称;第二种获取的是当前的Activity名称,非父类。
第一种方法:
1、所需步骤:
1.得到当前运行环境(context)的Activity管理器;
2.通过Activity管理器得到当前的任务栈信息;
3.从任务栈中获得栈顶的Activity的名称。
1、首先需要加一个权限:
<uses-permission android:name="android.permission.GET_TASKS"/>
2、Java代码如下:
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> runningTasks = manager .getRunningTasks(1);
RunningTaskInfo cinfo = runningTasks.get(0);
ComponentName component = cinfo.topActivity;
Log.e("current activity is ", component.getClassName());
3、其它说明:
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
RunningTaskInfo info = manager.getRunningTasks(1).get(0);
String shortClassName = info.topActivity.getShortClassName(); //类名
String className = info.topActivity.getClassName(); //完整类名
String packageName = info.topActivity.getPackageName(); //包名
第二种方法:
String contextString = context.toString();
//return contextString.substring(contextString.lastIndexOf(".")+1, contextString.indexOf("@"));
return contextString.substring(0, contextString.indexOf("@"));