Android 获取有TabActivity继承关系的子类名的方法 及 获取Activity类名的方法

来源:互联网 发布:战网 mac 更新agent 编辑:程序博客网 时间:2024/05/24 07:06
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("@"));


0 0
原创粉丝点击