私は主な活動と、バックグラウンドでFacebookから取得したデータをx時間ごとに更新するサービスを持っています。
最近では、最終的に新しい SDK 3.0.1 (2.x から) に移行しており、facebook セッションをサービスに渡す際に問題があります。
メインアクティビティがまだ実行されているときにサービスが実行されている場合、すべて正常に動作します。それ以外の場合、セッションは null であり、if (session.isOpened()) { ...} でクラッシュします。
ここに私のコードがあります:
@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);
}
SDK 2.x で行っていたように、保存された acces_token と expire_time でセッションを初期化する必要がありますか?
ありがとうございました!