很多时候需要得到当前Activity的实例和Activity的名称,下面给出实现下代码。
一、获取Activity的名字
1,首先需要获取权限
<uses-permission android:name="android.permission.GET_TASKS" />
2,编写代码
private static String getRunningActivityName(){
ActivityManager activityManager=(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
String runningActivity=activityManager.getRunningTasks(1).get(0).topActivity.getClassName();
return runningActivity;
}
1,设置一个Activity的管理类
public class TestActivityManager {
private static TestActivityManager sInstance = new TestActivityManager();
private WeakReference<Activity> 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>(activity);
}
}
2,编写一个MyApplication类,继承Application,在MyApplication中实现registerActivityLifecycleCallbacks回调,监听onActivityResumed()方法。
<pre name="code" class="java">public class MyApplication extends Application {
private static Context context;
@Override
public void onCreate() {
context = getApplicationContext();
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
}
@Override
public void onActivityStarted(Activity activity) {
}
@Override
public void onActivityResumed(Activity activity) {
TestActivityManager.getInstance().setCurrentActivity(activity);
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
});
}
public static Context getContext() {
return context;
}
}
3,在AndroidManifest.xml中加入你写的MyApplication
<application
android:name="com.tes.MyApplication"
android:allowBackup="true"
</application>
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,就是这个样子的了,没什么特别的了,^_^