в какой деятельности я?

#android #android-activity

#Android #android-активность

Вопрос:

Есть ли способ, с помощью которого фрагмент кода Java Android может получить некоторую информацию — какой-то PID — о том, в каком действии выполняется этот фрагмент кода?

Суть: я пишу библиотеку Android. Чтобы поддерживать одновременный вызов из нескольких действий, библиотека должна каким-то образом иметь возможность определить, что этот вызов был получен из действия ‘A’, а тот — из действия ‘B’.

(в качестве альтернативы, я мог бы заставить своих пользователей добавлять дополнительный параметр к каждому вызову библиотеки — какой-то вид активности PID — и определять активность таким образом, но ИМХО это создает неуклюжий API — я бы предпочел избежать этого)

Ответ №1:

Вы знаете все свои действия, поэтому можете проверить это с помощью оператора if, например :

для kotlin :

 class GetActivity(val activity : Activity)
{
if(activity is MainActivty)
{
//So you will know this is the main Activity
}

else if(activity is secondActivity )
{
// bla bla bla
}

}
  

Комментарии:

1. Я не знаю всех своих действий. На самом деле, нет никаких «моих» действий. Все, что я знаю, это код библиотеки, который не имеет какой-либо активности и который будет вызываться из различных приложений, написанных третьими сторонами, и иногда он может быть вызван несколькими действиями одновременно.

Ответ №2:

StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();

Затем проанализируйте массив, чтобы найти вызывающих ваш метод