Есть ли способ сделать функцию доступной для всех видов деятельности? - PullRequest
0 голосов
/ 02 февраля 2011

У меня есть набор команд, которые я хочу, чтобы мое приложение запускалось при перезапуске, независимо от того, какое действие оно выполняет. Я знаю, что мне нужно поставить onRestart() в каждый.

Поскольку это один и тот же набор команд, независимо от того, какое действие он выполняет, есть ли способ, которым я мог бы заставить их всех обращаться к одной функции для этого? Кажется, что это было бы лучше, чем копировать и вставлять команды в каждый обработчик onRestart(). Если мне нужно изменить набор команд, будет намного меньше работы.

Ответы [ 3 ]

1 голос
/ 02 февраля 2011

У вас есть несколько опций, в зависимости от кода.

Вы можете поместить его в класс помощника как статическую функцию: public static void doWork() { .. } Это должно работать, если все, что вы делаете, не зависит от того, что вы находитесь вактивность.Как правило, вы можете просто передать ему то, что ему нужно, например Context.

. Или вы можете расширить Activity своим собственным классом MyActivity и поместить работу в этот onResume.Затем продлите MyActivity для каждой вашей реальной деятельности.Теперь они будут автоматически выполнять эту работу, когда вы звоните super.onResume().Это работает хорошо, если вы действительно хотите делать одно и то же в каждом упражнении и не использовать много специализированных действий, таких как ListActivity.

Редактировать:

public class MyHelper {

  public static void doWork() {
    // do your work here
  }

}

public class MyActivity extends Activity {
  public void onResume() {
    super.onResume();
    MyHelper.doWork();
  }
}

Поиск «статический метод» предоставит более подробную информацию.

0 голосов
/ 02 февраля 2011

Это ваше приложение, которое перезапускается с нуля? Или только ваши действия, которые возобновляются / возобновляются?

Класс Application имеет метод onCreate (), и вы можете расширить Application в своем приложении, чтобы переопределить его поведение. Просто не забудьте изменить имя приложения в AndroidManifest.xml, чтобы оно запускало ваш собственный класс приложения при запуске. Этот код будет запускаться перед началом любых действий. Но он не будет запускаться каждый раз, когда действие останавливается и перезапускается. Если это то, что вам нужно, это не сработает.

Вы также можете реализовать одноэлементный класс, который содержит метод initialize () или метод restart (). Вы просто вызываете его из onRestart () в каждом действии, в котором хотите его получить. Похоже, этот специальный код должен быть локализован отдельно от ваших действий, поэтому я не думаю, что я бы рекомендовал расширить Activity, чтобы поместить туда код.

0 голосов
/ 02 февраля 2011

Получите все ваши действия из одного класса (что-то вроде ActivityBase), который, в свою очередь, происходит от предоставленного системой Activity. Затем внедрите onRestart() в ActivityBase.

...