问题标签 [lifetime]

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 投票
3 回答
15013 浏览

android-intent - 防止在关闭屏幕时重新创建 Android 活动

如何防止在关闭屏幕时重新创建活动?

我做什么

  1. 启动 Bejewels 并转到珠宝屏幕。
  2. 短按电源按钮。屏幕已关闭,但设备未关闭。
  3. 再次按下电源按钮。

我所看到的

与关闭屏幕前相同的屏幕。

对于我的应用程序(一个微不足道的应用程序,只是一个带有单个 WebView 的 Web 应用程序),场景如下:

我做什么

  1. 启动我的应用程序。Activity onCreate() 方法将 URL 加载到 WebView 中。
  2. 短按电源按钮。屏幕已关闭,但设备未关闭。
  3. 再次按下电源按钮。

我所看到的

WebView 正在重新加载页面。

我所期望的

就像在 Bejewels 案例中一样,我希望看到相同的屏幕,对于我的应用程序来说,它是处于之前状态的页面:脚本正在运行,表单字段已填充等。

调试表明,我错了(在上一个问题中)并且 onDestroy() 和 onCreate() 在屏幕刚刚打开时被一个接一个地调用。而且由于我仍然听到由脚本播放的音乐,因此当屏幕关闭时,看起来活动和 WebView 确实存在,直到我再次按下电源按钮。

我试过了。

  1. android:alwaysRetainTaskState="true" 相同的行为。
  2. 阅读有关意图(无济于事,我只是不明白,它们如何应用于我的情况)。
  3. 使用 PhoneGap。它的行为不同:只是在按下电源按钮时杀死整个应用程序。这更好,但不是最好的。
0 投票
3 回答
982 浏览

c++ - C++ 临时变量生命周期

此代码有效吗?

出于某种原因,我认为临时std::vector对象(从赋值符号开始)应该在构造后立即被破坏(从而使引用无效)

但是,调试证明我错了,好吧,我意识到我不太明白为什么函数返回时临时变量会被破坏。


我想我对一些基本的东西有很大的误解,所以请赐教:)

0 投票
1 回答
476 浏览

c++ - C++ - 临时变量及其生命周期

这个问题可以被认为是以下问题的后续问题:C++ 临时变量生命周期

Qt容器支持stream-like初始化语法。现在,当我编写以下代码时, myQVector在赋值后立即被破坏,并且引用变得悬空。


对应operator<<的实现方式如下:

据我所知,10.4.10 Temporary Objects声明临时对象的生命周期已延长以匹配对其的相应const引用的生命周期。

但是,在这种情况下,临时对象QVector<QString>() 会提前销毁。

我想这可能是由于最后一个操作返回 aQVector<QString>&并且不应该知道有关临时的生命周期的事实QVector<QString>,但是这种解释并不严格并且可能是错误的。

那么,为什么会发生这种情况?

0 投票
3 回答
116 浏览

c++ - 如何处理返回指针的生命周期?

我正在制作一组类来表示图像。此类的一个应用是在一组平铺图像上绘制图片。抽象图像类看起来像这样:

我预见到的问题是,如果我开设这样的课程:

旨在根据需要创建、保存和删除非常大图像的子部分(图块),那么用户可以存储指向最终可能不再存在的 Pixel 对象的指针。

一种选择是要求用户在完成后重新检查像素,例如:

我不太喜欢这样,因为如果用户不返回像素,那么它可能真的会干扰平铺图像的操作——忘记返回像素可能会导致它完全锁定,因为它不会无法删除不再需要的图块。它们将被锁定以保证指向像素的指针保持有效。用户可能很难发现锁定的原因。

此外,这种关注有点专业。在典型情况下,在图像消失之前,您不会期望像素消失。

有没有更好的方法来处理这种情况?智能指针?不要以某种方式返回参考?首先让 TiledImage 从 Image 继承没有意义吗?当我希望图形非常大时,我当然希望能够将 TiledImage 作为图像传递。

谢谢。

0 投票
1 回答
105 浏览

c++ - 对临时的引用,它由类型运算符创建

假设我们需要一些类来包装 std::string,除了所有其他细节之外,它还使用类型转换运算符自动转换回 std::string:

因此,运算符将返回包装字符串对象的副本

但是,为什么下面的代码看起来是正确的?

转换运算符将返回 m_value 的临时副本,因此const std::string& y = x将创建对该临时副本的引用。

为什么这行得通?我记得有一些引用对象的生命周期延长,但我不确定。

第二个问题:是否有可能有一个类型转换运算符返回一个 const 引用?

例如:

那么,上面的代码不必在临时副本上工作吗?

PS:这个问题有点相关:Lifetime of temporaries,但仍然是一个不同的问题。

0 投票
5 回答
5576 浏览

python - python中变量的生命周期

可能的重复:
Python 中的“Least Astonishment”:可变默认参数

考虑以下两个函数

它们的行为应该相同,但更重要的是,如果不带参数调用,两者都应该简单地打印“[0]”。行为非常不同,只有 a() 会一直打印 '[0]'。

为什么 a() 与 b() 的功能不同?

如果您希望在没有参数传递给函数的情况下使用默认值覆盖变量,那么您似乎无法使用列表 API。如果你这样做,该函数将“记住”变量以前是什么。

我的代码中的情况出现在递归函数中,因此仅“删除”不需要的变量并不会真正起作用。每次调用不带参数的函数时,有没有办法覆盖变量?

经过数小时的研究,我发现了这一点。它可能与上述问题有关,并可能导致答案。我们可以像这样定义一个生命周期类:

然后定义2个函数:

似乎它只是对参数的默认值进行一次评估,然后使用该评估的任何值。它从不说“正在创建:a”或“正在创建:b”。所以也许如果每次都评估默认参数,它会导致对实际问题的回答。

0 投票
1 回答
1875 浏览

jdbc - Derby/JDBC 连接生命周期(或空闲超时)

使用 JDBC 连接到 Derby 数据库,一段时间后,Derby 或 JDBC 会自动关闭连接。(这可以称为“连接生命周期”值或超时值)。

我在哪里可以找到超时值是多少?是 Derby 还是 JDBC 关闭了连接?它是一个“空闲超时”值吗?所以,如果该连接上有活动,Derby 或 JDBC 是否会更新以在 (LastActivity + IdleTimeoutValue) 时关闭连接?

看了一堆页面,包括 DriverManager getConnection 的 Connection timeout 超时 后如何重新建立 JDBC 连接?

0 投票
2 回答
1216 浏览

wpf - 为 WPF/Prism 应用程序中的每个 ViewModel 实例化 IUnitOfWork

我有很多这样的存储库:

和这样的工作单元:

现在我希望每次我的 ViewModels 得到解决,一个新的IUnitOfWork实例化。我的大多数 ViewModel 都是这样的:

ViewModels 总是使用 Unity Container 解决,如下所示:

我的问题是,我如何以及在哪里注册我ViewModel的 s 并为每个人提供实例IUnitOfWorkIUnitOfWork

0 投票
2 回答
757 浏览

javascript - 带有 jQ​​uery 和 AJAX 的 JS 变量的生命周期

我目前正在尝试解决 AJAX 的异步行为。问题是,我有未指定数量的 AJAX 调用,我都必须等待。我正在使用 jQuery 创建一个延迟对象,一旦最后一个 ajax 调用完成,包括其成功处理程序,该对象就会手动解析。工作正常,但是:似乎发生所有事情的函数在 then() 函数执行之前已经终止(并清除了在该函数中声明的所有变量)。我只能通过全局声明所需的变量用户来解决这个问题。

如果我声明

然后它不起作用。控制台声明未声明 var users。(见代码示例)。

什么是解决此问题的干净方法?全局声明所有需要的变量对我来说似乎不是很好。

用我的代码示例链接到 jsfiddle

0 投票
1 回答
3500 浏览

asp.net-mvc - 用户关闭浏览器时 ASP.net MVC 4 会话 cookie 过期

我和这个人有同样的问题。因为我很幸运,他的解决方案也对我有用。但我认为它有点脏,我想知道是否没有更好的。

我已经在 IIS 上设置了这个配置,但是当用户关闭她的浏览器时,cookie 总是会过期(如果我不使用他的“cookie hack”)

显示我的 IIS 配置的图像

有任何想法吗?

编辑:清除:丢失的不是服务器端会话,它只是“ASP.NET_SessionId”cookie 生命周期,这是不正确的。

EDIT2:经过一些研究,我想知道ASP.NET_SessionIdcookie 是什么时候设置的。如果我将其删除(使用 Firefox)并刷新页面(甚至多次),则不会出现新页面……这是怎么回事?

EDIT3:我刚刚发现,如果我将某些内容放入会话中,会话 ID cookie 将被设置,因此该问题(EDIT2)已关闭。