2013-11-14 4 views
2

Я разрабатываю приложение, которое должно знать, какие пользователи находятся в сети или в автономном режиме. Каждый пользователь может уведомлять сервер, если он находится в сети или в автономном режиме, а затем я могу получить эту информацию с сервера.Когда сервер знает пользователя онлайн или офлайн

Проблема в том, что в андроиде есть стандарт, который обозначает пользователя как онлайн, так и офлайн.

Одним из решений является то, что приложение запущено, а затем пользователь находится в сети, если действие приложения остановлено или не запущено, тогда пользователь отключен. Итак, в моем приложении, как я узнаю, что приложение останавливается?

Если вышеизложенное невозможно или не будет хорошим решением, тогда когда мое приложение сообщит серверу, что он отключен.

Заранее спасибо.

+0

Что бы лучший способ для того, чтобы сервер, чтобы знать, что андроид устройство все еще подключен/подключен? –

ответ

0

В Android, there is no hard solid concept of "leaving an application". Приложения могут быть нажаты на стек, нажав на дом, все еще живым в фоновом режиме или отодвинутым сверху другим приложением. Нет никакого реального крючка, который вы можете использовать, чтобы сказать «хорошо, я действительно ухожу сейчас, я должен уведомить сервер».

Итак, вы можете использовать его наоборот: сервер предоставляет залог для пользователя, для 5mn, скажем так, и клиентское приложение должно его обновить. После 5 минут бездействия сервер может знать, что пользователь переходит в автономный режим.

Разумеется, задержка будет заключаться между необходимостью точной/оперативной реакции на стороне сервера и использования аккумулятора, поскольку это будет уменьшать время автономной работы, постоянно уведомляя сервер о том, что клиент все еще находится в сети.

+0

Спасибо за ответ. Я думаю, что такой подход может также сильно повлиять на сервер, если миллион пользователей работает под управлением приложения. Не уверен, что я не слишком хорошо знаком с реализацией сервера? –

0

В Android Когда приложение создает метод onCreate() класса Application, это вызовы, когда приложение принудительно закрыто по методу Terminate() - это вызовы.

Если вы хотите что-то сделать, когда приложение создано и завершено, вам нужно создать свой собственный класс приложений, расширив класс Application.

1) Создайте свой собственный класс, как этот

public class MyApplication extends Application { 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
       // When application creates 

    } 

    @Override 
    public void onTerminate() { 
     super.onTerminate(); 
       // calls when application force closed. 

    } 

} 

2) В вашем Manifest.xml

<application 
     android:name="com.yourpackagename.MyApplication" 
     android:allowTaskReparenting="true" 
     android:debuggable="true" 
     android:icon="@drawable/ijoomer_luncher_icon" 
     android:label="@string/app_name" 
     android:theme="@style/ijoomer_theme" > 
+0

Могу ли я быть уверенным, что OnTerminate() будет вызываться, даже если телефон выключен. Предыдущие ответы говорят о том, что невозможно сообщить серверу, что приложение идет вниз! –

+0

onTerminate() будет вызывать, когда приложение принудительно закрывается по вашему желанию. Но не звоните, когда приложение в фоновом режиме. –

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