java - 您的应用程序类如何知道应用程序何时完成?

标签 java android

我有一个数据库单例,我想在应用程序完成时对其调用 .close()。

我可以在 Application 类的 onCreate() 中对数据库调用 .open(),但是我在哪里调用 .close()?

最佳答案

是的,我所做的是寻找前景 Activity 。在每个前台 Activity 结束后,我可以递减。一旦我达到零并在那里停留了一段合理的时间,我就知道我可以安全地关闭这些资源。最终以这种方式在我的应用程序中进行虚拟生命周期回调。因此,无论您有多少任务或事情从哪里开始,这种方式都有效。如果您只能从一个地方运行和启动您的应用程序,并且一切都只以单一线性方式进行,那么根 Activity 方法也可以。

具体是这样的:

基础 Activity

public class BaseActivity extends Activity {

   public void onResume() {
      MyBaseApplicationType app = (MyBaseApplicationType)getApplicationContext();
      app.incrementForegroundActivity();
   }

   public void onPause() {
      MyBaseApplicationType app = (MyBaseApplicationType)getApplicationContext();
      app.decrementForegroundActivity();
   }

}

MyBaseApplication

public class MyBaseApplication extends Application {

   private int mForegroundActivities;
   private Handler mHandler;

   public void onCreate() {
      mHandler = new Handler();
   }

   public void decrementForegroundActivity() {
      mForegroundActivities--;
      if (mForegroundActivities == 0) {
         mHandler.postDelayed(mRunnable, 1000 /*about a second*/);
      }
   }

   public void incrementForegroundActivities() {
      mForegroundActivities++;
   }

   private Runnable mRunnable = new Runnable() {
      public void run() {
         if (mForegroundActivities == 0) {
            // Listeners of this broadcast can then clean up anything
            // as needed.
            Intent intent = new Intent("com.my.package.ACTION_BACKGROUNDED");
            sendBroadcast(intent);
         }
      }
   };

}

关于java - 您的应用程序类如何知道应用程序何时完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12999996/

相关文章:

java - 从 spring-boot-starter-parent 继承依赖项的 Maven pom.xml 不起作用

java - Google New Places API - 您的应用程序包含公开的 Google Cloud Platform

android - 重新启动时如何使android应用程序返回上一个打开的 Activity ?

android - 移除@Override 注解错误

java SSLHandshakeException 虽然证书受信任的系统范围

java - 如何在 GAE/J 中获取实体大小?

android - 选择首选项后如何启动浏览器

java - 使用 Java 将 PDF 转换为 Swf

java - 蓝牙通讯器

android - 想在我的偏好中有一个按钮(android)