问题标签 [application-lifecycle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
303 浏览

tfs - 任何人都想分享他们使用 TFS 进行应用程序生命周期管理的经验

我们正在为我们的客户开发白标网络和移动医疗保健应用程序。我们的产品正在迅速发展,我们正在支持现有客户并支持新客户。

当前的开发工作流程涉及用于源代码的 SVN、需求文档跟踪和用于缺陷跟踪的 mantis。

我们正在为我们的组织考虑基于 VS TFS 2010 的应用程序生命周期管理。我们希望 VS TFS 2010 将帮助我们简化以下内容

1) 需求管理 2) 源代码版本控制 3) 构建自动化 4) 测试管理

只是想知道是否有人有使用 VS TFS 2010 的经验并想分享他们的经验?VS TeamSystem 有什么有价值的替代品吗?

0 投票
1 回答
3179 浏览

c# - Application_End 和后台进程,优雅地退出 ASP.Net 应用程序

我有一个 ASP.Net 应用程序,它使用 ThreadPool.QueueUserWorkItem() 触发一些后台工作人员。大多数情况下,运行的后台线程为零,但有时可能一次执行多达 5-6 个。此外,大多数将在几秒钟内完成,但它们可能会运行长达 10 分钟。

考虑到所有可能导致 ASP.Net 应用程序关闭的不同场景,如果可能,我希望这些后台进程在应用程序需要关闭并且它们处于处理过程中时优雅地退出。

我预计不会有太多问题创建一种方法来通知进程提前停止工作并在接到应用程序正在关闭的呼叫后的几秒钟内进行清理。尽管如果有人对此有具体建议,我当然会很感激。

我的两个主要问题是:

1) 什么时候是告诉后台工作人员收拾东西的合适时间。在 Application_End 期间?处置()?或者也许是我不知道的第三种选择。

2)如果我在上述事件期间等待进程完成然后返回,是否有一个点,即没有立即返回 Application_End 可能会导致应用程序出现比没有很好地关闭后台作业更严重的问题。

谢谢!

0 投票
1 回答
6597 浏览

asp.net - ASP.NET 应用程序级别与会话级别和 Global.asax ......混淆

以下文本来自我正在阅读的书“MCTS 自定进度培训套件(考试 70-515)使用 ASP.NET 4 进行 Web 应用程序开发”。它提供了应用程序生命周期的概要。

  1. 用户首先请求您网站中的页面。
  2. 请求被路由到处理管道,后者将其转发到 ASP.NET 运行时。
  3. ASP.NET 运行时创建 ApplicationManager 类的实例;此类实例表示将用于执行应用程序请求的 .NET 框架域。应用程序域将全局变量与其他应用程序隔离开来,并允许每个应用程序根据需要单独加载和卸载。
  4. 创建应用程序域后,将创建 HostingEnvironment 类的实例。此类提供对托管环境内项目的访问,例如目录文件夹。
  5. ASP.NET 创建将用于处理请求的核心对象的实例。这包括 HttpContext、HttpRequest 和 HttpResponse 对象。
  6. ASP.NET 创建 HttpApplication 类的实例(或重复使用实例)。此类也是站点的 Global.asax 文件的基类。您可以使用此类来捕获应用程序启动或停止时发生的事件。当 ASP.NET 创建 HttpApplication 的实例时,它还会创建为应用程序配置的模块,例如 SessionStateModule。
  7. 最后,ASP.NET 通过 HttpApplication 管道处理请求。此管道还包括一组用于验证请求、映射 URL、访问缓存等的事件。

本书随后演示了一个使用 Global.asax 文件的示例:

什么时候开始申请?会话和应用程序级别有什么区别?我对这是如何管理的感到很困惑。我认为应用程序级别的类“位于” AppDomain 对象之上,并且 AppDomain 包含该用户特定于该会话的信息。有人可以解释一下 IIS 如何管理 Applicaiton 级别的类,以及 HttpApplication 类如何位于 AppDomain 下吗?任何事情都值得赞赏。

0 投票
2 回答
1370 浏览

ios - 当应用程序在后台被杀死时如何执行清理?

我的应用程序创建了一些我在其整个生命周期中需要的临时文件。我最终需要处理这些文件,这样它们就不会占用设备上的空间。我想我可以在应用程序退出时删除它们,但是由于引入了多任务处理,生命周期并不像以前那么简单。我的主要问题是:当我的应用程序进入后台并稍后被杀死时,它会收到applicationWillTerminate:吗?还是只是从记忆中抹去?

当应用程序进入后台时,我无法进行清理,因为它可能在操作过程中处于后台,并且一旦回到前台就需要临时文件。我想我可以在启动时清理文件,但无论如何我对这种applicationWillTerminate:行为很感兴趣。

0 投票
1 回答
530 浏览

git - 使用 git 为我的项目维护骨架的最佳方法

几年来,我一直在寻找管理我正在从事的多个项目的方法。每一个都在某种程度上是不同的,但应用程序的核心对所有人来说都是共同的。当我在当前项目中实现一些新功能时,很难在以后的其他项目中使用它们。我必须搜索许多项目才能真正找到该功能。

然后是 git,它对改善我的项目管理有很大帮助。我创建了一个框架项目,其中实现了整个应用程序结构和核心库、工具和模块。这是我开始的每个新项目的基础。它看起来像这样:

骨架合并时间:

现在来了项目调整、更改 ini 文件、添加自定义模板、模块、演示者等。现在项目过着它自己的生活。一段时间后与更新的骨架合并:

我喜欢查看从骨架到项目的所有更改,因此 --no-commit 选项。

现在我的问题来了。保养骨骼的最佳方法是什么?当向每个以骨架为基础的项目添加新功能时,会有一些仅与当前项目相关的功能。但是应用程序的核心有一些特性,我在下一个项目中也需要它们,因此我需要将它们合并到骨架中。

我没有在 git/merge 或任何其他 git 的命令中找到任何维护骨架的方法。因此,我手动将项目与骨架进行比较(尽管使用了很棒的工具)并应用了适用于骨架的更改,然后我将致力于骨架。

我试图维护骨架以将项目添加为远程,获取项目然后合并到骨架,但是这样对项目的所有更改(仅用于项目)都将返回到骨架,这是无效的。

0 投票
6 回答
4385 浏览

ios - 任何 iOS 应用程序启动时首先调用哪个方法和函数?

任何 iOS 应用程序启动时首先调用哪个方法和函数?

0 投票
5 回答
6929 浏览

android - 在 HOME 按钮上完成 android 应用程序单击

如何在HOME按钮单击时完成应用程序?

0 投票
1 回答
97 浏览

iphone - 应用程序终止后恢复 segmenedControl 的选定索引

所以我在界面中有这个分段控件我使用用户默认设置将选定的段存储在应用程序视图控制器中applicationDidEnterBackground并将其恢复到 - (void)applicationWillEnterForeground {

NSNumber *indexNumber;

if (indexNumber = [[NSUserDefaults standardUserDefaults] objectForKey:@"selectedIndex"]) {

NSInteger selectedIndex = [indexNumber integerValue]; self.segmentedControl.selectedSegmentIndex = selectedIndex; }

但是当我启动应用程序,选择一个段然后终止应用程序时,我得到了这个错误。程序收到信号:重新启动时“SIGKILL”。

任何帮助,将不胜感激

0 投票
0 回答
1389 浏览

java - Android:创建一个新线程调用 onResume?

我想这是一个更通用的问题,但我的 Android 程序似乎在这两个与线程创建相关的函数调用之间的主 UI 线程中调用 onResume。这会导致其他我不想发生的调用,到目前为止,我发现的唯一解决方法是设置全局标志(我不喜欢,而且我认为这是不好的编程习惯)。它看起来像这样:

不知何故,在这些调用之间(由 BluetoothCommHandler 对象从 UI 线程进行),onResume 被调用。如果有人能指出何时触发 onResume 和其他活动生命周期事件的良好来源,我将非常感激。此外,我检查了这个:http: //developer.android.com/reference/android/app/Activity.html,它似乎没有我能找到的任何提示。

最后一点 - onResume 总是在这两个命令之间被调用,这让我认为这不是一个真正的线程切换问题。

我也刚刚注意到 onResume 被称为一对 onPause ,它被更早地调用 - 仍然不知道为什么它恰好发生在这两个函数调用之间。

编辑:代码包含在下面。

蓝牙处理程序对象的调用:

主 UI 线程中的 onResume 函数(mNoRestartFlag只有在我想要的时候才会调用这个特定的位。它不是我在上面提到的标志 - 它处理我在这里没有谈论的另一种情况):

AndroidManifest 中的 Activity OptionsHandler(与 DeviceListActivity 相同)声明(请注意,它是一个 Theme.Dialog 样式的活动,它弹出在 UI 线程的顶部,导致我上面提到的 onPause):

实际的 connectThread 被创建:

ConnectThread 的创建和运行(该mDontKill标志我上面提到的用于绕过 onResume 症状的标志):

导致问题的实际 start() 函数:

图例: mBS是一个蓝牙套接字mDB的成员变量,一个蓝牙设备的成员变量。

总而言之,我在 UI 线程上创建了一个 BluetoothCommHandler 对象,它尝试创建一个 ConnectThread,然后在蓝牙套接字上调用 accept() 命令时,它失败了,因为线程的 cancel() 函数已被调用(这只是有一个关闭套接字的try-catch)。此取消是从上面列出的 start() 函数调用的,该函数由 onResume 函数调用。onResume 是 onPause 的补充,由于主 UI 活动上出现选择器对话框而被调用。这个 onResume 似乎总是在我提到的 pre-EDIT 的前两行代码之间被调用。我试图弄清楚为什么它总是在那里发生,这样我就可以在没有关闭套接字的情况下发生 accept() 。

0 投票
4 回答
5139 浏览

grails - Grails 服务类检测应用程序关闭的最佳方法?

我有一个 Grails 服务类,当我的 Tomcat 应用程序服务器关闭时需要进行一些清理。

我在 Grails 文档中没有看到任何关于 service.stop() 或 destroy() 方法,或者实现任何类型的应用程序生命周期侦听器的方法。

最好的方法是什么?

谢谢!