2014-02-20 5 views
0

Мы разрабатываем комплексное приложение для Android, состоящее из нескольких различных видов деятельности. Есть ли способ определить, какой из них является текущим?Как определить «верхнюю» активность в Android

Это похоже на простую вещь, но я даже не уверен, какие ключевые слова искать.

+0

Я хотел бы знать, откуда вы собираетесь для поиска самой большой активности. –

ответ

1

Это мой метод:

ActivityManager activityManager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); 
//Get the info from the currently running task. 
List<ActivityManager.RunningTaskInfo> taskInfo = activityManager.getRunningTasks(1); 
Log.d(TAG, "TOP Activity ::" + taskInfo.get(0).topActivity.getClassName()); 

Perrmission необходимы AndroidManifest.xml

<uses-permission android:name="android.permission.GET_TASKS"/> 

Подробнее: How to get the current top most activity?

+0

Я нашел пример кода ActivityManager, но не было никакого упоминания о всех необходимых разрешениях. Благодаря!! – Rich

+0

остерегайтесь того, что большинству пользователей не понравится ваше приложение, если ему нужно разрешение «GET_TASKS». Это считается очень опасным и подозрительным и делает ваше приложение похожим на шпионское ПО. Ответ Иисуса лучше, потому что вам не нужны специальные разрешения. –

1

Изучите класс Application и создайте свой собственный класс, расширяющий приложение. В классе приложения, добавить поле Activity currentActivity;

В OnCreate() каждой деятельности вы делаете, вы должны сделать

CustomApp app = (CustomApp)getApplication(); 
app.currentActivity = this; 

Или лучше создать BaseActivity простирающийся активность и сделать вашу деятельность продлить BaseActivity так что вам не нужно чтобы написать, что в каждом onCreate

Что вы можете проверить, какая деятельность является верхней, где вы хотите.

С уважением

Смежные вопросы