0
我有一個主要活動和一項服務,我每隔x小時更新一次從Facebook獲取的一些數據。通過facebook會話服務(SDK 3.0.1)
在這些日子裏我終於移動到新的SDK 3.0.1(從2.X)和我有通過facebook的會話到服務的一個問題:
如果該服務運行時,主活動仍在運行一切工作正常,否則我的會話爲空,所以它崩潰在if(session.isOpened()){...}因爲會話== null。
這裏是我的代碼:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i("ServiceUpdate", "Received start id " + startId + ": " + intent);
session = Session.getActiveSession();
startservice();
return START_STICKY;
}
private void startservice() {
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
if (session.isOpened()) {
if (isOnline()) {
Log.i("ServiceUpdate", "start timer");
update();
Log.i("ServiceUpdate", "end timer");
}
}
}, 600000, 6 * 3600000);
}
我一定來初始化保存acces_token和的expire_time爲我所用SDK 2.x到做會議?
謝謝!
是的,非常感謝你,即使我的活動沒有運行,它也能工作。 – user1345108
不幸的是我得糾正我的意見: 這樣我在我的服務中得到一個工作會話,但它變成了新的活動會話,所以我的MainActivity中的會話變爲關閉。 是否有可能在同一時間有兩個活動和打開的會話,一個在我的MainActivity中,另一個在服務中? 使用SDK 2.x可能很簡單...也許我必須像前面那樣通過access_token ... – user1345108
活動會話是一個靜態單例實例,它保存在Session類中。對於您的用例,我首先會檢查Session.getActiveSession是否爲null(在service和MainActivity中),然後創建一個新的活動會話(如果是)。 –