如果应用程序在后台被终止或关闭,则更新远程数据库中的值

时间:2015-09-02 22:40:36

标签: android kill ondestroy

我需要将dotPlot(~x, data=d, groups = color, breaks = seq(min(d$x)-binwidth, max(d$x)+binwidth,binwidth), cex = 1, col = d$color, pch = 16) var getData = prompt('Which Car You Wanna Drive',''); var foundCar = ""; for(var i = 0 ; i < this.cars.length ; i++){ $('.wrap').append(' ' + this.cars[i] + ' <br/> '); //check if this car in the array is the picked car if(this.cars[i] == getData){ foundCar = getData; } } $('.wrap').append('you picked ' + foundCar); 设置为false,并在应用程序关闭或终止时在远程数据库中更新它。

有没有办法检测我的用户是否这样做?

我不想在boolean中这样做。如果我的用户通过Android杀死应用程序进程,则isOnline似乎无法调用。

此致

2 个答案:

答案 0 :(得分:0)

嗯,我可以问你为什么不想在onStop中这样做?

无论如何,onStop可能并不总是在内存不足的情况下调用onDestroy,例如当Android缺乏资源且无法正确显示活动时。

因此,onPause是您保证将被调用的最后一种方法。 也许您可以将其与isFinishing()结合使用,如http://developer.android.com/reference/android/app/Activity.html#isFinishing%28%29

中所述
  

public boolean isFinishing ()

     

检查此活动是否正在完成,   要么是因为你在上面调用了finish(),要么就是其他人要求的   它完成了。这通常用于onPause()来确定是否   活动只是暂停或完全结束。

如果您正在探索替代方案,那么您可能会感兴趣的另一种方法:

public void onWindowFocusChanged (boolean hasFocus)

当活动的当前窗口获得或失去焦点时调用。这是该活动是否对用户可见的最佳指标。默认实现清除密钥跟踪状态,因此应始终调用。

(转到后台并不一定意味着用户关闭了应用,但您知道它是否适用于您)

答案 1 :(得分:0)

那么,我只能认为你应该开始一个服务(在它自己的过程中),通过阅读getRunningAppProcesses()设备上运行的应用程序进程列表来检查你的应用程序是否被杀死。 {3}}