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

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("@"));


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二一点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值