问题标签 [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.
android-intent - 防止在关闭屏幕时重新创建 Android 活动
如何防止在关闭屏幕时重新创建活动?
我做什么
- 启动 Bejewels 并转到珠宝屏幕。
- 短按电源按钮。屏幕已关闭,但设备未关闭。
- 再次按下电源按钮。
我所看到的
与关闭屏幕前相同的屏幕。
对于我的应用程序(一个微不足道的应用程序,只是一个带有单个 WebView 的 Web 应用程序),场景如下:
我做什么
- 启动我的应用程序。Activity onCreate() 方法将 URL 加载到 WebView 中。
- 短按电源按钮。屏幕已关闭,但设备未关闭。
- 再次按下电源按钮。
我所看到的
WebView 正在重新加载页面。
我所期望的
就像在 Bejewels 案例中一样,我希望看到相同的屏幕,对于我的应用程序来说,它是处于之前状态的页面:脚本正在运行,表单字段已填充等。
调试表明,我错了(在上一个问题中)并且 onDestroy() 和 onCreate() 在屏幕刚刚打开时被一个接一个地调用。而且由于我仍然听到由脚本播放的音乐,因此当屏幕关闭时,看起来活动和 WebView 确实存在,直到我再次按下电源按钮。
我试过了。
- android:alwaysRetainTaskState="true" 相同的行为。
- 阅读有关意图(无济于事,我只是不明白,它们如何应用于我的情况)。
- 使用 PhoneGap。它的行为不同:只是在按下电源按钮时杀死整个应用程序。这更好,但不是最好的。
c++ - C++ 临时变量生命周期
此代码有效吗?
出于某种原因,我认为临时std::vector
对象(从赋值符号开始)应该在构造后立即被破坏(从而使引用无效)。
但是,调试证明我错了,好吧,我意识到我不太明白为什么函数返回时临时变量会被破坏。
我想我对一些基本的东西有很大的误解,所以请赐教:)
c++ - C++ - 临时变量及其生命周期
这个问题可以被认为是以下问题的后续问题:C++ 临时变量生命周期。
Qt
容器支持stream-like
初始化语法。现在,当我编写以下代码时, myQVector
在赋值后立即被破坏,并且引用变得悬空。
对应operator<<
的实现方式如下:
据我所知,10.4.10 Temporary Objects
声明临时对象的生命周期已延长以匹配对其的相应const
引用的生命周期。
但是,在这种情况下,临时对象QVector<QString>()
会提前销毁。
我想这可能是由于最后一个操作返回 aQVector<QString>&
并且不应该知道有关临时的生命周期的事实QVector<QString>
,但是这种解释并不严格并且可能是错误的。
那么,为什么会发生这种情况?
c++ - 如何处理返回指针的生命周期?
我正在制作一组类来表示图像。此类的一个应用是在一组平铺图像上绘制图片。抽象图像类看起来像这样:
我预见到的问题是,如果我开设这样的课程:
旨在根据需要创建、保存和删除非常大图像的子部分(图块),那么用户可以存储指向最终可能不再存在的 Pixel 对象的指针。
一种选择是要求用户在完成后重新检查像素,例如:
我不太喜欢这样,因为如果用户不返回像素,那么它可能真的会干扰平铺图像的操作——忘记返回像素可能会导致它完全锁定,因为它不会无法删除不再需要的图块。它们将被锁定以保证指向像素的指针保持有效。用户可能很难发现锁定的原因。
此外,这种关注有点专业。在典型情况下,在图像消失之前,您不会期望像素消失。
有没有更好的方法来处理这种情况?智能指针?不要以某种方式返回参考?首先让 TiledImage 从 Image 继承没有意义吗?当我希望图形非常大时,我当然希望能够将 TiledImage 作为图像传递。
谢谢。
c++ - 对临时的引用,它由类型运算符创建
假设我们需要一些类来包装 std::string,除了所有其他细节之外,它还使用类型转换运算符自动转换回 std::string:
因此,运算符将返回包装字符串对象的副本。
但是,为什么下面的代码看起来是正确的?
转换运算符将返回 m_value 的临时副本,因此const std::string& y = x
将创建对该临时副本的引用。
为什么这行得通?我记得有一些引用对象的生命周期延长,但我不确定。
第二个问题:是否有可能有一个类型转换运算符返回一个 const 引用?
例如:
那么,上面的代码不必在临时副本上工作吗?
PS:这个问题有点相关:Lifetime of temporaries,但仍然是一个不同的问题。
python - python中变量的生命周期
考虑以下两个函数
它们的行为应该相同,但更重要的是,如果不带参数调用,两者都应该简单地打印“[0]”。行为非常不同,只有 a() 会一直打印 '[0]'。
为什么 a() 与 b() 的功能不同?
如果您希望在没有参数传递给函数的情况下使用默认值覆盖变量,那么您似乎无法使用列表 API。如果你这样做,该函数将“记住”变量以前是什么。
我的代码中的情况出现在递归函数中,因此仅“删除”不需要的变量并不会真正起作用。每次调用不带参数的函数时,有没有办法覆盖变量?
经过数小时的研究,我发现了这一点。它可能与上述问题有关,并可能导致答案。我们可以像这样定义一个生命周期类:
然后定义2个函数:
似乎它只是对参数的默认值进行一次评估,然后使用该评估的任何值。它从不说“正在创建:a”或“正在创建:b”。所以也许如果每次都评估默认参数,它会导致对实际问题的回答。
jdbc - Derby/JDBC 连接生命周期(或空闲超时)
使用 JDBC 连接到 Derby 数据库,一段时间后,Derby 或 JDBC 会自动关闭连接。(这可以称为“连接生命周期”值或超时值)。
我在哪里可以找到超时值是多少?是 Derby 还是 JDBC 关闭了连接?它是一个“空闲超时”值吗?所以,如果该连接上有活动,Derby 或 JDBC 是否会更新以在 (LastActivity + IdleTimeoutValue) 时关闭连接?
看了一堆页面,包括 DriverManager getConnection 的 Connection timeout 超时 后如何重新建立 JDBC 连接?
wpf - 为 WPF/Prism 应用程序中的每个 ViewModel 实例化 IUnitOfWork
我有很多这样的存储库:
和这样的工作单元:
现在我希望每次我的 ViewModels 得到解决,一个新的IUnitOfWork
实例化。我的大多数 ViewModel 都是这样的:
ViewModels 总是使用 Unity Container 解决,如下所示:
我的问题是,我如何以及在哪里注册我ViewModel
的 s 并为每个人提供实例IUnitOfWork
?IUnitOfWork
javascript - 带有 jQuery 和 AJAX 的 JS 变量的生命周期
我目前正在尝试解决 AJAX 的异步行为。问题是,我有未指定数量的 AJAX 调用,我都必须等待。我正在使用 jQuery 创建一个延迟对象,一旦最后一个 ajax 调用完成,包括其成功处理程序,该对象就会手动解析。工作正常,但是:似乎发生所有事情的函数在 then() 函数执行之前已经终止(并清除了在该函数中声明的所有变量)。我只能通过全局声明所需的变量用户来解决这个问题。
如果我声明
然后它不起作用。控制台声明未声明 var users。(见代码示例)。
什么是解决此问题的干净方法?全局声明所有需要的变量对我来说似乎不是很好。
asp.net-mvc - 用户关闭浏览器时 ASP.net MVC 4 会话 cookie 过期
我和这个人有同样的问题。因为我很幸运,他的解决方案也对我有用。但我认为它有点脏,我想知道是否没有更好的。
我已经在 IIS 上设置了这个配置,但是当用户关闭她的浏览器时,cookie 总是会过期(如果我不使用他的“cookie hack”)
有任何想法吗?
编辑:清除:丢失的不是服务器端会话,它只是“ASP.NET_SessionId”cookie 生命周期,这是不正确的。
EDIT2:经过一些研究,我想知道ASP.NET_SessionId
cookie 是什么时候设置的。如果我将其删除(使用 Firefox)并刷新页面(甚至多次),则不会出现新页面……这是怎么回事?
EDIT3:我刚刚发现,如果我将某些内容放入会话中,会话 ID cookie 将被设置,因此该问题(EDIT2)已关闭。