2011-02-02 2 views
0

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

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

ответ

1

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

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

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

Edit:

public class MyHelper { 

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

} 

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

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

+0

+1 Я бы использовал класс с помощью методов 'static', потому что мне легче его поддерживать. Даже если вы не используете какие-либо специализированные «действия» прямо сейчас, если вы добавите их в будущем, вы можете получить большой рефакторинг кода. –

+0

это звучит хорошо. Мне нравится подход «вспомогательный класс как статическая функция», так как есть некоторые ситуации, в которых я не хочу, чтобы он выполнял эти шаги на экранах certian, и я уже знаю, как тестировать эти ситуации, чтобы я мог включить оператор if в своем резюме, чтобы вызвать помощника, если этой ситуации нет. но как реализовать помощника? можете ли вы привести пример или ссылку для меня, пожалуйста? –

+0

Смотрите мои правки .... –

0

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

0

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

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

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

+0

Хорошо, что я пытаюсь сделать, так это, когда пользователь «закрывает» приложение, а затем открывает его, ему предоставляется экран входа в систему.и способ, которым я получил работу в режиме работы на экране, заключается в том, что onrestart запускает действие «login» для восстановления. активность проверяет пароль и затем закрывается с результатом, если они правильно подтверждены. и если он закрывается с отмененным результатом, он выкидывает их из программы. кажется, что он хорошо работает, просто хотел сохранить копию, вставляющую все это. –

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