Polling inside Main Activity

Viewed 85

My requirements are to poll a web service every fixed interval. After instantiating the handler as a private field of the class, I'm doing this in the onCreate method of the main activity:

if (handler != null) {
    handler.post(new Runnable() {
        @Override
        public void run() {
            String sessionId = SharedPreferencesHelper.getSessionId(MainActivity.this);

            if (sessionId != null && !sessionId.isEmpty()) {

                if (Utils.isNetworkAvailable(MainActivity.this)) {
                    restHandler.getUnreadMessages(sessionId);
                }

                handler.postDelayed(this, Constants.CHAT_POLLING_REFRESH_DELAY);
            } else {
                handler.removeCallbacks(this);
            }
        }
    });
}

Then onDestroy:

if (handler != null) {
    handler.removeCallbacksAndMessages(null);
    handler = null;
}

The backend is complaing that sometimes the sessionId passed is empty or null. How can this be possible? I'm using retrofit. Bonus question: can I have problems with MainActivity.this context reference when app goes in background?

0 Answers
Related