android中获取当前Activity的实例和名字

    很多时候需要得到当前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;                 
}


二、获取当前Activity的实例

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,就是这个样子的了,没什么特别的了,^_^



  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值