0

私は主な活動と、バックグラウンドで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 でセッションを初期化する必要がありますか?

ありがとうございました!

4

1 に答える 1

2

Session のデフォルトの動作は、トークン情報を Android の SharedPreferences に保存することです。そのため、サービスで Session.openActiveSessionFromCache を呼び出すだけでよいはずです。それが null を返す場合、ユーザーがまだ Facebook に接続していないことを意味します。

于 2013-04-09T20:41:11.310 に答える