在Android上,在调用了一个活动的onDestroy之后,我需要进行API调用。最好的方法是什么?
我尝试过调用一个意向服务,但是在应用关闭后它没有运行。
答案 0 :(得分:1)
This正是您要找的。它可以通过Application类的registerActivityLifecycleCallbacks方法应用。
答案 1 :(得分:1)
如果应用已强制关闭ondestroy
且onPause
未被调用,则根据文档onPause
方法是最后一种方法,肯定会被调用
所以最好在 if let userDefaults = UserDefaults(suiteName: "group.watch.app.com" ) {
userDefaults.set( UserProfileObj as AnyObject, forKey: "UserInfo")
userDefaults.synchronize()
}
}
方法
答案 2 :(得分:1)
最好在onStop上启动服务而不是onDestroy,在我的情况下,像魅力一样工作,希望可能适用于
@Override
protected void onStop() {
super.onStop();
startService(new Intent(this, ServerCall.class));
}
@Override
protected void onDestroy() {
super.onDestroy();
}
公共类ServerCall扩展了服务{
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
Log.d("MyApp","Service started");
goActive("0");
}
public void goActive(final String status) {
StringRequest sr = new StringRequest(Request.Method.POST,
GO_ACTIVE,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// Log.d("MyApp",response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("MyApp", error.toString());
}
}) {
@Override
protected Map<String, String> getParams() {
Log.d("MyApp", SharedpreferenceUtility.getInstance().getString(Constants.KEY_EMAIL));
Map<String, String> params = new HashMap<String, String>();
params.put("email", SharedpreferenceUtility.getInstance().getString(Constants.KEY_EMAIL));
params.put("status", status);
return params;
}
};
EarningChamp.getInstance().addToRequestQueue(sr);
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
答案 3 :(得分:0)
是的,您可以使用Intent Service实现目标,在onDestroy()
中使用该服务您可以查看以下示例。
http://stacktips.com/tutorials/android/creating-a-background-service-in-android