标签: lifecycle

JSP标签生命周期

我刚刚在我的代码中引入了一个错误,因为我似乎误解了jsp标签的生命周期.

标签在错误之前就像这样工作:我将标签作为属性传递给某个集合,并将其显示为表格.该集合从控制器传递到JSP.

错误之后:我删除了设置集合的属性.相反,在标记中我检查集合是否为null,然后从请求中按名称获取它(使用命名约定).

我没想到的事情:收集最初在标签中设置后,在后续执行中永远不会变为空!它仍被定义为TLD中的非要求属性.

希望标签不会保留执行之间的先前值.

lifecycle jsp jsp-tags

11
推荐指数
2
解决办法
7302
查看次数

用于持久数据存储的SQLite或SharedPreferences?

对于数据的持久存储,使用SQLlite数据库而不是SharedPreferences有什么明显的优势,反之亦然?目前我的应用程序数据只有几千字节,但可能会在未来增加到这么大的十倍.我无法找到任何说明使用SharedPreferences可用存储量的地方,但是可以想象这将是使用它的一个限制吗?这两种方法的速度有什么不同吗?我想要权衡这两种存储方法的优缺点.

lifecycle storage android

11
推荐指数
1
解决办法
4502
查看次数

JUnit @Rule与@Before的生命周期交互

我有一些使用的JUnit测试TemporaryFolder @Rule.他们使用TemporaryFolderin @Before方法执行一些设置:

@Rule
public TemporaryFolder folder = new TemporaryFolder();

@Before
public void init() {
  folder.newFile("my-file.txt");
}

@Test
public void myTest() { ... }
Run Code Online (Sandbox Code Playgroud)

大部分时间这都很完美.但是,在使用时SpringJUnit4ClassRunner我发现在某些情况下,在应用内部实例init()之前调用该方法.因此,临时文件夹位置未设置(即:)在内部使用时,我的文件最终在工作目录中,而不是.StatementTemporaryFoldernullfolderinit()/tmp

因此,在某些情况下,@Before方法会在规则之前执行,但是,我无法建立明确的模式.我偶尔会看到一些与我自己的规则实现类似的问题.

有什么方法可以确保在任何设置方法之前应用我的规则语句?

java lifecycle junit rules

11
推荐指数
1
解决办法
4449
查看次数

好的是更新片段而不是创建新实例?

在Android文档中使用片段的示例中,当应用程序处于"双视图"模式时,只要应用程序需要显示不同标题的详细信息,就会重新创建详细信息片段. FragmentTransaction.replace()用于将每个旧的详细信息片段实例换成​​新的.

这是推荐的做法吗?当真正的意图(没有双关语意图)要更新UI显示的内容而不是UI本身时,创建新的UI实例并不浪费.在我看来,创建新实例的唯一原因是,如果有人打算将它们添加到backstack,那么用户可以回溯步骤.否则,直接更新片段是否安全/可取?

在该示例的情况下,它将意味着一种方法DetailsFragment.setShownIndex().这将被调用,传入新的标题索引,而不是重新创建DetailsFragment.

假设我们有一个示例版本,其中一个活动管理两个片段,但一次只显示一个片段,根据需要交换每个片段.活动是否可以创建每个片段的实例,保留对每个片段的引用,然后根据需要简单地添加或删除这两个实例?

这可能是粘性的一个结果是,当标题片段处于resumed状态(即在"前景"中)时,选择标题将导致在DetailsFragment.setShownIndex()细节片段处于stopped状态时进行调用.

好主意?馊主意?

提前致谢.

lifecycle android transactions fragment android-activity

11
推荐指数
1
解决办法
7494
查看次数

在片段第一次可见后立即执行代码

我有一个片段,显示了使用MPAndroidChart创建的折线图.加载片段大约需要200毫秒.

我想通过在片段变得可见之后加载图表数据数据来提高感知的应用程序性能.

因此,我需要在片段变得可见之后立即执行代码,但只有第一次它变得可见.

我不能使用onResume(),因为它在片段可见之前被调用.

注意:我不能使用异步任务,需要在UI线程上完成.无论如何它都没有意义,因为这是一次初始化,只需要大约200毫秒.

lifecycle android fragment

11
推荐指数
2
解决办法
5814
查看次数

Android Application对象生命周期

我找不到Application的对象(扩展Application)生命周期.例如,如果我有一个通过Alarm调用的广播接收器会发生什么.Application中的方法会被调用吗?或者一切都与应用程序无关?如果我在Application中实例化了datahelper并且我从广播接收器中调用它,它是否可用?哪个是Application对象生命周期,什么时候被销毁?什么时候使用警报时调用它?当活动不在Application对象的前台时会发生什么?提前致谢.吉列尔莫.

lifecycle android broadcastreceiver

10
推荐指数
1
解决办法
3884
查看次数

锁定屏幕后调用Android onCreate

当我的应用程序在"顶部"运行时锁定屏幕时,系统几乎立即调用onCreate(屏幕仍为黑色).这种破坏性行为可能是什么原因?

lifecycle android locking oncreate android-lifecycle

10
推荐指数
2
解决办法
2693
查看次数

如何映射Eclipse m2e插件未涵盖的Maven生命周期阶段?

我在Mac 10.9.5上使用Eclipse Kepler.我使用m2e Eclipse插件导入了许多Maven项目.所有这些项目都是父母的孩子.当我查看各个子pom.xml文件中的"Overview"时,我看到如下内容:

Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:properties-maven-plugin:1.0-alpha-2:write-project-properties (execution: default, phase: process-resources)
Run Code Online (Sandbox Code Playgroud)

我希望Eclipse在适当的时候执行这些生命周期阶段,但我不知道如何做到这一点.当我选择Eclipse的建议时......

Permanently mark goal write-project-properties in pom.xml as ignore
Run Code Online (Sandbox Code Playgroud)

我在提示"选择要放置忽略的位置"时选择了父pom.xml文件,但是,当我在Eclipse编辑器中查看子pom.xml文件时,错误不会消失.如何映射m2e未涵盖的生命周期阶段?

编辑:

根据答案,我去了Eclipse - > Preferences - > Maven - > Lifecycle Mappings,点击了"Open Workspace Lifecycle Mappings Metadata",并根据建议编辑了文件......

<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
    <pluginExecutions>
        <pluginExecution>
            <pluginExecutionFilter>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>xmlbeans-maven-plugin</artifactId>
                <versionRange>2.3.3</versionRange>
                <goals>
                    <goal>xmlbeans</goal>
                </goals>
            </pluginExecutionFilter>
            <action>
                <ignore />
            </action>
        </pluginExecution>
        <pluginExecution>
            <pluginExecutionFilter>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>properties-maven-plugin</artifactId>
                <versionRange>[1.0-alpha-2,)</versionRange>
                <goals>
                    <goal>write-project-properties</goal>
                </goals>
            </pluginExecutionFilter>
            <action>
                <execute />
            </action>
        </pluginExecution>
    </pluginExecutions>
</lifecycleMappingMetadata>
Run Code Online (Sandbox Code Playgroud)

即使在重新启动Eclipse之后,当我打开子pom.xml文件时,"生命周期配置未涵盖的插件执行"错误仍然像以前一样.

eclipse lifecycle m2eclipse maven m2e

10
推荐指数
1
解决办法
2万
查看次数

SceneDelegate 函数从未被调用

我有一个 SwiftUI/SpriteKit 项目。在一次充满错误的更改包标识符的任务中,我决定创建一个项目并复制我的文件。

现在我已经有了这个包含所有旧文件的新项目,但是当我运行它时,我得到一个空白屏幕,因为我的SceneDelegate函数scene(_:willConnectTo:options:)没有被调用。

根据文档SceneDelegate如果您对info.plist. 然而,我已经做了这些改变,但我的SceneDelegate仍然不起作用。

在我的 中info.plist,我有以下内容: 在此输入图像描述

这是我的相关部分SceneDelegate

import UIKit
import SwiftUI

class SceneDelegate: UIResponder, UIWindowSceneDelegate {

    var window: UIWindow?
    
    static var mainData = MainData()

    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
        // If using a storyboard, the `window` property …
Run Code Online (Sandbox Code Playgroud)

lifecycle info.plist swift swiftui uiscenedelegate

10
推荐指数
1
解决办法
4603
查看次数

如何将 Watch 应用迁移到 SwiftUI 生命周期

我有一个带有 Apple Watch 扩展的 iOS 应用程序。我下载了 Xcode 14 并收到警告:

WatchKit 故事板在 watchOS 7.0 及更高版本中已弃用。请迁移到 SwiftUI 和 SwiftUI 生命周期。

我完全支持这次迁移,事实上,我的初始托管控制器返回了 SwiftUI 视图。但我在任何地方都找不到如何从 WatchKit 实际迁移到 SwiftUI 生命周期。有谁知道如何做到这一点?

我完全可以删除我的 WatchKit 故事板,因为它们除了指向初始控制器之外没有使用。这是我的初始控制器代码(如果有帮助的话):

import WatchKit
import Foundation
import SwiftUI

class HostingController: WKHostingController<AnyView> {
    override var body: AnyView {
        return AnyView(WatchHomeUI())
    }
}
Run Code Online (Sandbox Code Playgroud)

lifecycle swift apple-watch watchkit swiftui

10
推荐指数
1
解决办法
1379
查看次数