我有一个主要的活动和服务,我每隔x小时更新一次从Facebook获取的一些数据。
在这些日子里,我终于转向新的SDK 3.0.1(从2.x开始),我将facebook Session传递给服务时遇到了问题:
如果服务在主活动仍在运行时运行,一切正常,否则我的会话为空,因此它会在if(session.isOpened()){...}崩溃,因为session == 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一样?
谢谢!
答案 0 :(得分:2)
Session的默认行为是将令牌信息保存在Android的SharedPreferences中,因此您应该只能在服务中调用Session.openActiveSessionFromCache。如果返回null,则表示您的用户尚未与Facebook建立连接。