【发布时间】:2016-12-24 06:13:52
【问题描述】:
美好的一天。我的情况很糟糕。我正在会话中创建位置共享逻辑。我将该会话保持在 mysql 上的服务器上。当 android 遇到该活动时,我会插入相应的用户信息。当 android 离开活动时我删除了该列,因此会话被放弃给另一方。一切都很好,直到一个问题。Android 不为从最近刷卡的应用程序提供回调,这意味着应用程序被完全杀死。我在那里找到了一个工作。我正在使用服务并在达到我想要的活动后立即启动服务。在服务中,我有一个简单的东西叫做 onTaskRemoved(),一旦应用程序被从最近的应用程序中删除,它就会通知我。一切都很好,直到我想打电话到我的服务器以删除该列。调用不仅会通过,我将永远不会在那里收到任何响应,但在 onDestroy() 中一切都按预期工作。实际上这是代码
@Override
public void onTaskRemoved(Intent rootIntent) {
destroySession();
super.onTaskRemoved(rootIntent);
}
private void destroySession() {
Log.d("Fsafasfsafasfas", "destroySession: " + opponentId + " my user id" + sharedHelper.getUserId());
Call<ResponseBody> locationCall = Retrofit.getInstance().getInkService().requestFriendLocation(sharedHelper.getUserId(), opponentId, "", "", Constants.LOCATION_REQUEST_TYPE_DELETE);
locationCall.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
if (response == null) {
destroySession();
return;
}
if (response.body() == null) {
destroySession();
return;
}
try {
String responseBody = response.body().string();
Log.d("Fsafasfsafasfas", "onResponse: " + responseBody);
JSONObject jsonObject = new JSONObject(responseBody);
boolean success = jsonObject.optBoolean("success");
if (success) {
stopSelf();
} else {
destroySession();
}
} catch (IOException e) {
stopSelf();
e.printStackTrace();
} catch (JSONException e) {
stopSelf();
e.printStackTrace();
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
destroySession();
}
});
}
我猜这个电话永远不会打通,我猜是唯一打印的日志,是 id 的日志,仅此而已..有人知道发生了什么吗?我该如何处理这种情况?
【问题讨论】:
-
您好,您有解决此问题的方法吗?谢谢。
-
还没有 :( 无法通过
标签: android service kill-process