当前位置: 首页 > 知识库问答 >
问题:

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

东门新立
2023-03-14

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

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

共有2个答案

沃弘图
2023-03-14

通常,您应该在ondestroy()onstop()中关闭数据库连接。onDestroy()是在从内存中删除并销毁activity之前调用的。当您转到其他应用程序时,将调用onstop()。这两种方法都有效,但ondestroy()通常更好,因为onstop()会减慢应用程序切换的速度。

更多信息:http://developer.android.com/training/basics/activity-lifecycle/starting.html

傅自明
2023-03-14

是的,我做的是寻找前景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);
         }
      }
   };

}
 类似资料:
  • 我正在尝试修复内存不足的问题,我想知道是否需要更改spark home文件夹中默认配置文件(

  • 问题内容: 我们有一个Java服务器应用程序,该应用程序可以在许多计算机上运行,​​所有计算机都连接到Internet,其中一些位于防火墙后面。我们需要从一个中央站点远程更新JAR文件和启动脚本,而不会明显中断应用程序本身。 该过程必须无人值守且万无一失(即,由于不及时的互联网中断,我们无法中断应用程序)。 过去,我们使用各种外部脚本和实用程序来处理类似的任务,但是由于它们具有自己的依赖性,因此难

  • 我想知道是否有办法知道一个应用程序(可以在后台关闭或打开)是否已经启动,只需单击: 通知(在通知中心)? 还是跳板上的应用程序图标? 谢谢

  • 我知道有很多关于这个话题的文章,但我就是找不到正确的答案。 有没有办法知道用户何时收到远程通知以及用户何时在iOS8上点击了一个。我想知道这一点,因为当我收到它时,我想保存它,当用户点击它时,我想打开一些视图。 我找到了这个答案https://stackoverflow.com/a/16393957/1241217但问题是,当用户在应用程序中打开通知中心并单击其中一个时,该应用程序既不处于非活动状

  • 我试图理解我们什么时候需要使用这个应用程序。在我们的node Express中使用 当我在网上搜索时,我在reddit上偶然发现了这个答案,它说明了应用程序之间的区别。获取和应用程序。使用 在此基础上,我总结了以下几点。 充当超级路由或中间件?这意味着它在? 此外,如果有人能添加更多关于app.use.的信息/练习,我将不胜感激