Помощь выхода из Android - PullRequest
2 голосов
/ 10 марта 2011

У меня есть приложение, в котором пользователь входит и выходит из системы.В логе он сообщает моей базе данных, что пользователь онлайн.У меня проблема в том, что когда пользователь какое-то время не использует приложение, а процессор убивает мое приложение, есть ли метод или что-то, где я могу запустить свой последний кусок кода, чтобы выйти из него?Я посмотрел на жизненный цикл андроида, и я не могу использовать уничтожение, потому что это связано только с этой деятельностью.Спасибо!

Ответы [ 3 ]

1 голос
/ 10 марта 2011

Я нашел решение для этого - не идеально, но сработало для меня.

1.) Создайте службу, работающую в фоновом режиме, которая запускается при создании первой операции.

2.) Каждое действие связывается с этим сервисом, поэтому его «регистрация» (т. Е. Он активен и onPause) не была вызвана)

3.) В каждом действии зарегистрируйте приемник вещания, который прослушиваетнамерение, инициируемое службой на регулярной основе.

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

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

Как ясказал, что это не самый хороший способ сделать это, но, похоже, пока что работает для моих нужд.

0 голосов
/ 10 марта 2011

В AndroidManifest у вас есть имя.Теперь создайте

public class MyName extends Application {
}

- это ваш класс Application, который автоматически создается, когда пользователь открывает ваше приложение.Теперь просто переопределите метод onTerminate () внутри класса MyName.

@Override
public void onTerminate() {
    user.logOut();
    super.onTerminate();
}  

Вы можете использовать свой класс MyName в каждом действии просто с помощью этого кода:

MyName myName= (MyName) this.getApplication();
myName.logUser(user);
0 голосов
/ 10 марта 2011

почему вы не можете использовать метод onDestroy своей деятельности?если у вас много занятий, вы можете создать свой собственный базовый класс действий и извлечь все свои действия из этого базового класса.

public abstract class BaseActivity extends Activity {
....
    @Override
    public void onDestroy() {
        super.onDestroy();
        // do your stuff here
    }
}

, а затем создать все ваши действия, например:

public class YourActivity extends BaseActivity {
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...