package com.tuit.ar.services;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Service;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Handler;
import android.os.IBinder;
import com.tuit.ar.api.Twitter;
import com.tuit.ar.api.TwitterAccount;
import com.tuit.ar.models.Settings;
import com.tuit.ar.models.SettingsObserver;
import com.tuit.ar.models.timeline.Friends;
import com.tuit.ar.models.timeline.Replies;
public class Updater extends Service implements SettingsObserver {
private Timer timer;
private Handler handler = new Handler();
private Runnable runnable = new Runnable() {
public void run() {
try {
TwitterAccount account = Twitter.getInstance().getDefaultAccount();
Friends.getInstance(account).refresh();
Replies.getInstance(account).refresh();
} catch (Exception e) {
}
}
};
public Updater() {
super();
}
@Override
public IBinder onBind(Intent arg0) {
return null;
}
public void onCreate() {
super.onCreate();
createTimer();
Settings.getInstance().addObserver(this);
}
private void createTimer() {
if (timer != null) timer.cancel();
SharedPreferences preferences = Settings.getInstance().getSharedPreferences(getApplicationContext());
if (!preferences.getBoolean(Settings.AUTOMATIC_UPDATE, Settings.AUTOMATIC_UPDATE_DEFAULT)) {
return;
}
String interval = preferences.getString(Settings.UPDATE_INTERVAL, Settings.UPDATE_INTERVAL_DEFAULT);
Integer freq = new Integer(interval);
int miliFreq = freq * 1000 * 60;
timer = new Timer();
timer.scheduleAtFixedRate(
new TimerTask() {
public void run() {
handler.post(runnable);
}
},
miliFreq, miliFreq);
}
public void settingsHasChanged(Settings settings) {
this.createTimer();
}
public void onDestroy() {
super.onDestroy();
timer.cancel();
}
}