import android.app.Service;
import android.content.Intent;
import android.content.IntentFilter;
+import android.net.ConnectivityManager;
import android.os.IBinder;
import android.preference.PreferenceManager;
import android.support.v4.app.NotificationCompat;
import android.support.v4.content.LocalBroadcastManager;
+import android.util.Log;
/*
* Copyright © 2013 Marius Gavrilescu
}
}
+ /**
+ * Runnable that continously long polls the server for commands
+ *
+ * @author Marius Gavrilescu <marius@ieval.ro>
+ */
+ private final class LongPollRunnable implements Runnable{
+ public void run(){
+ final ConnectivityManager man=(ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
+ final HttpCallExecutableRunnable runnable=new HttpCallExecutableRunnable("/get", null, FonBotMainService.this, new PollResultCallback(FonBotMainService.this), false);
+
+ Log.d("LongPollRunnable", "Long polling started");
+ while(man.getActiveNetworkInfo() != null && man.getActiveNetworkInfo().isConnected())
+ try {
+ runnable.run();
+ } catch (final Exception ex){
+ ex.printStackTrace();
+ }
+ Log.d("LongPollRunnable", "Long polling stopped");
+ }
+ }
+
/**
* Broadcast action: add an ongoing event
*/
private static final IntentFilter DYNAMIC_BROADCAST_FILTER=new IntentFilter();
static{
- DYNAMIC_BROADCAST_FILTER.addAction(Intent.ACTION_SCREEN_ON);
DYNAMIC_BROADCAST_FILTER.addAction(Intent.ACTION_BATTERY_CHANGED);
DYNAMIC_BROADCAST_FILTER.addAction(Intent.ACTION_HEADSET_PLUG);
}
/** true if running in foreground, false otherwise */
private boolean isForeground = false;
+ /** Thread that runs a {@link LongPollRunnable} */
+ private Thread longPollThread;
+
/**
* Get the set of ongoing events.
*
updateNotification=true;
}
- if(intent!=null && intent.getAction()==ACTION_TRIGGER_POLL)
- Utils.pollServer(this);
+ if(longPollThread == null || !longPollThread.isAlive()){
+ longPollThread = new Thread(new LongPollRunnable());
+ longPollThread.start();
+ }
final boolean runForeground=PreferenceManager.getDefaultSharedPreferences(this).getBoolean("foreground", false);
if(!runForeground)