获取Activity的名字和类

    xiaoxiao2021-04-02  43

        很多时候需要得到当前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,就是这个样子的了,没什么特别的了,^_^

    转载请注明原文地址: https://ju.6miu.com/read-665714.html

    最新回复(0)