Android中的应用关闭事件

时间:2014-05-08 06:13:09

标签: android performance

有没有办法知道您的应用程序正在运行? 我想在Android应用程序刚关闭时运行一段代码。任何建议将不胜感激。

5 个答案:

答案 0 :(得分:3)

我建议您创建一个自定义应用程序类,并注意存储应用程序的可见性,它是否在后台运行。显然,如果您不像这样关闭应用程序

How to close Android application?

看看这个,这样你就不会从背景中关闭它并像这样执行可见性检查。

public class MyApplication extends Application {

public static boolean isActivityVisible() {
return activityVisible;
}  

public static void activityResumed() {
activityVisible = true;
}

public static void activityPaused() {
activityVisible = false;
}

 private static boolean activityVisible;
}

这就是你将应用程序类注册到清单文件的方式。

<application
android:name="your.app.package.MyApplication"
android:icon="@drawable/icon"
android:label="@string/app_name" >

并覆盖这两种方法。

@Override
protected void onResume() {
super.onResume();
MyApplication.activityResumed();
}

@Override
protected void onPause() {
super.onPause();
MyApplication.activityPaused();
}

现在检查此状态并在后台运行时执行您喜欢的操作。您可以帮助Booleans检查应用程序是否因其他原因而未关闭。

答案 1 :(得分:3)

在这么多时间之后,现在回答我自己的问题。当用户关闭应用程序时,该过程将终止,恕不另行通知。不保证会调用onDestroy。只有在你明确调用finish()时才会这样。

答案 2 :(得分:1)

一般情况下,在Android中关闭应用程序是没有的:用户只是停止使用该应用程序。它取决于程序员,以确保用户不提及创建和终止进程。

请注意,Android可能会在缺少内存时终止应用程序进程,并在以后重新启动应用程序。

例如,旧办公室应用程序之一有以下错误:用户想要插入照片,办公室应用程序调用了相机应用程序,Android杀死了办公室应用程序。办公室应用程序尚未准备好重新启动并丢失所有文档更改(这是错误)。显然,有缺陷的应用程序忽略了传递给onCreate()的包。

因此,流程生命周期和应用程序生命周期是不同的事情。应用程序可以看到进程重启 :静态变量重置为初始值(很可能为null)。因此,可以使用非null bundle和null静态数据结构。

进程终止时执行一段代码的一个例子可以在下面找到: Android camera locked after force close。 该帖子解决的问题是,当进程终止时,Android本身并没有关闭相机。我无法从您的帖子中看出您的问题是否与此类似。

答案 3 :(得分:0)

如果你在你的Activity中使用派生自类:ViewModel的对象,你可以捕获事件:onCleared();在 onDestroy() 之后总是被调用。 请参阅:https://developer.android.com/topic/libraries/architecture/viewmodel

答案 4 :(得分:-5)

你可以使用android应用程序类的onTerminate方法。它将被解雇它Android应用程序关闭