Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android,跟踪应用程序何时进入后台_Android_Android Applicationinfo - Fatal编程技术网

Android,跟踪应用程序何时进入后台

Android,跟踪应用程序何时进入后台,android,android-applicationinfo,Android,Android Applicationinfo,后台:我在应用程序类中转储一些数据,并在短时间间隔后或当应用程序进入后台时(例如,当用户按下Home按钮或Task switcher按钮时)将其保存到文件中。我不想使用Activity类的onPause(),因为应用程序中有许多活动,我必须检查onPause()中的所有活动。当我在应用程序中从一个活动跳到另一个活动时,也会调用onPause(这会创建不必要的保存操作) 问题:应用程序进入后台时是否会触发通用事件,无论它处于哪个活动 谢谢连续检查以下代码表示您可以使用定时器类 ActivityMa

后台:我在应用程序类中转储一些数据,并在短时间间隔后或当应用程序进入后台时(例如,当用户按下Home按钮或Task switcher按钮时)将其保存到文件中。我不想使用Activity类的onPause(),因为应用程序中有许多活动,我必须检查onPause()中的所有活动。当我在应用程序中从一个活动跳到另一个活动时,也会调用onPause(这会创建不必要的保存操作)

问题:应用程序进入后台时是否会触发通用事件,无论它处于哪个活动


谢谢

连续检查以下代码表示您可以使用定时器类

ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<RunningTaskInfo> runningTasks = null;
try {
    runningTasks = activityManager.getRunningTasks(1);
} catch (Exception e) {

}
RunningTaskInfo runningTaskInfo = runningTasks.get(0);
ComponentName topActivity = runningTaskInfo.topActivity;
if(topActivity.getPackageName().equals(your packagename)){
   S.o.p("fine");}
else{
   S.o.p.("application sent to background");}
ActivityManager ActivityManager=(ActivityManager)getSystemService(ACTIVITY_服务);
List runningTasks=null;
试一试{
runningTasks=activityManager.getRunningTasks(1);
}捕获(例外e){
}
RunningTaskInfo RunningTaskInfo=runningTasks.get(0);
ComponentName topActivity=runningTaskInfo.topActivity;
if(topActivity.getPackageName().equals(您的packagename)){
S.o.p(“罚款”);}
否则{
S.o.p.(“申请发送到后台”);}
onStop()
在活动从视图中隐藏时调用,即用户按下“主页”按钮
onPause()
仅在
活动
隐藏时使用,也就是说,由于某些重叠部分可见。当然,
onPause()
是在调用
onStop()
之前调用的。您可以在上看到整个生命周期。我鼓励您使用生命周期,而不是反对生命周期。状态更改时保存数据

对于定时数据存储,我建议您使用计时器。当您将所有数据提交到应用程序上下文,并且可以使用更少的恢复点时,我建议将日期存储在
ondestory()
调用中。如果没有,我建议实现一个
TimerTask
来计划数据的定期序列化


回答你的问题,不!它并不是Android,而是完全考虑你的应用程序,并且有一个生命周期。每个活动都有一个生命周期,所有活动都由一个堆栈及其各自的生命周期连接在一起。

tks了解有关计划数据存储的提示。回到
onStop()
这件事上,您的解决方案也绑定到活动类,而不是应用程序。这不是我想要的,因为我说过有太多的活动,如果我使用它,我必须将代码注入到每个onStop()函数中。您可以扩展
应用程序
,并将该类用作您的上下文。但是,请记住,类不能对与活动相同的生命周期作出反应。也许你可以玩“registerActivityLifecycleCallbacks()”,但我没有这方面的经验。一个定时计时器似乎是你最好的选择,因为你想要定时执行。谢谢你的提示。是的,我会按计划保存,但我正在努力防止保存点之间发生不好的事情,因为用户可以切换到其他应用程序,而我的应用程序由于内存不足而被杀死。无论如何,我可以尝试您提到的方法。为此,您应该按照开发人员的建议,在活动暂停或停止时使用活动的生命周期更改来保存数据,并在恢复时恢复数据。尝试使用API并使用它,而不是围绕它编码。请参阅,谢谢,这确实是跟踪应用程序状态的一种好方法,但它是主动接收事件而不是被动接收事件。正如其他答案所指出的,似乎没有。