Быстрый и простой способ:
var Colors = function(){
return {
'WHITE':0,
'BLACK':1,
'RED':2,
'GREEN':3
}
}();
console.log(Colors.WHITE) //this prints out "0"
Итак, есть ли способ сделать это с помощью функции из SDK?
blockquote>Нет, извините.
Было бы возможно прослушивать события «запуск / завершение деятельности» с каким-то приемником на конкретное приложение (мой) и отслеживать историю стека?
blockquote>Вы можете использовать
registerActivityLifecycleCallbacks()
наApplication
, если вы собираетесь поддерживать API уровня 14 и выше (ака, Android 4.0 +).
Очень простой способ для достижения истории активности - с именами классов
определить activity_history_list
в вашем mainActivity
public static List<String> activity_history_list;
и в каждом onStart()
каждого действия вы создаете (например MainActivity
)
@Override
public void onStart() {
super.onStart();
activity_history_list.add(MainActivity.this.getClass().getSimpleName());
}
в другом действии (например SettingActivity
)
@Override
public void onStart() {
super.onStart();
MainActivity.activity_history_list.add(SettingActivity.this.getClass().getSimpleName());
}
Вы можете получить доступ к activity_history_list
в любом месте, пока это static
, вы можете распечатать всю историю сразу или получить доступ к определенной активности в истории с помощью index
Использование команд ADB:
1. adb shell dumpsys activity activities -> displays list of activities in back stack
2. adb shell dumpsys activity process -> displays list process in back stack
3. adb shell dumpsys activity intents -> displays list of pending intents in back stack
4. adb shell dumpsys activity broadcast -> displays list of broadcast in back stack
5. adb shell dumpsys activity services -> displays list of services running in back stack
Использование Менеджера активности:
ActivityManager m = (ActivityManager) ctx.getSystemService( ctx.ACTIVITY_SERVICE );
List<RunningTaskInfo> runningTaskInfoList = m.getRunningTasks(10);
Iterator<RunningTaskInfo> itr = runningTaskInfoList.iterator();
while(itr.hasNext()){
RunningTaskInfo runningTaskInfo = (RunningTaskInfo)itr.next();
int id = runningTaskInfo.id;
CharSequence desc= runningTaskInfo.description;
int numOfActivities = runningTaskInfo.numActivities;
String topActivity = runningTaskInfo.topActivity.getShortClassName();
}
вы можете использовать следующий метод:
ActivityManager am = (ActivityManager)this.getSystemService(Context.ACTIVITY_SERVICE);
int sizeStack = am.getRunningTasks(2).size();
for(int i = 0;i < sizeStack;i++){
ComponentName cn = am.getRunningTasks(2).get(i).topActivity;
Log.d("", cn.getClassName());
}
получить список стека активности.