0

我在 Intentservice 的 onHandleIntent() 方法中运行一个简单的 fql 查询。不知道问题是什么,查询部分没有得到执行。这是我的 onHandleIntent() 方法

protected void onHandleIntent(Intent intent)
{

    System.out.println("inside service method now");
    String fqlQuery = "SELECT uid, username, online_presence, status FROM user WHERE uid = 100001024732884";

      Bundle params = new Bundle();
      params.putString("q", fqlQuery);
      Session session = Session.getActiveSession();
    Request request = new Request(session,
              "/fql",                         
              params,                         
              HttpMethod.GET,                 
              new Request.Callback(){         
                  public void onCompleted(Response response) {
                    System.out.println("inside the service now 4444");
                      Log.i(TAG, "Result: " + response.toString());
                  }                  
          }); 
          Request.executeBatchAsync(request);
}

只有第一条语句被打印。

当我将相同的代码放在我的 MainActivity 中时,它工作正常,但在 IntentService 中它停止工作。我正在单击按钮启动服务。

4

1 回答 1

0

您的问题是 IntentService 将在调用回调之前完成并销毁,因为它是异步运行的。不要使用回调来获取响应,而是尝试使用它。

  Bundle params = new Bundle();
  params.putString("q", fqlQuery);
  Session session = Session.getActiveSession();
  Request request = new Request(session,
          "/fql",                         
          params,                         
          HttpMethod.GET);
  Response response = request.executeBatchAndWait();
于 2014-04-13T13:04:43.170 回答