很多时候需要得到当前Activity的实例和Activity的名称,下面给出实现下代码。
一、获取Activity的名字
1,首先需要获取权限
[html] view plain copy <uses-permission android:name="android.permission.GET_TASKS" /> 2,编写代码 [java] view plain copy private static String getRunningActivityName(){ ActivityManager activityManager=(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); String runningActivity=activityManager.getRunningTasks(1).get(0).topActivity.getClassName(); return runningActivity; }二、获取当前Activity的实例
1,设置一个Activity的管理类
[java] view plain copy 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()方法。 [java] view plain copy <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 [html] view plain copy <application android:name="com.tes.MyApplication" android:allowBackup="true" </application> 4,实例,返回按钮,结束当前Activity [java] view plain copy BackBtn.setOnClickListener(new OnClickListener() { public void onClick(View v) { String activityName = getRunningActivityName(); Log.d(TAG, activityName + " is finish"); TestActivityManager.getInstance().getCurrentActivity().finish(); } });OK,就是这个样子的了,没什么特别的了,^_^
