#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();
Затем проанализируйте массив, чтобы найти вызывающих ваш метод