问题标签 [invalidation]

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 投票
1 回答
1149 浏览

android - 检查android列表项(可绘制)是否仍然可见

假设我有一个带有 LinearLayout 的 ImageView 和 TextView 列表。现在我正在使用简单的 ArrayAdapter 扩展,它将 Strig[][] 作为项目,它是一个双字符串数组(每个条目包含 String[2],其中第一个字符串是图像的 uri,第二个是文本。我覆盖 getView 以显示图像和文本,当然还有回收视图:-)。但是,由于图像加载,即使从资源加载可能很慢,我在异步任务中执行它,这意味着我加载了默认图像并且我使用:startLoading (这是我的方法),它赌注 ImageView 和 Uri 一次图像准备就绪,将其放置在图像视图中。

但是有时,由于它是一个列表,如果图像尚未加载并且我正处于过程的中间,那么停止加载是值得的,这是在我正在加载图像的行不再可见的情况下。

由于视图被回收,我无法检查 ImageView 是否可见,因为它可能是可见的,但具有不同的 Drawable ......有没有办法让我知道在某些时候我的行无效且不可见?有没有一种简单的方法或外壳我需要开始使用标志和标签模式以及类似的东西来发现我的行不再有效?

0 投票
1 回答
1059 浏览

delphi - Delphi 6 - 仅当所有者窗口在使用 Graphics32 库时需要重新绘制时才更新位图

我有一个使用原生 Delphi 代码在 TPaintBox 画布上创建 3D 运动的应用程序。在旧代码中,我将 3D 图像渲染为 Timer 事件上的临时 TBitmap。在 TPaintBox OnPaint() 事件中,我将 BitBlt() 临时 TBitmap TPaintBox 的画布。这种方法效果很好,但动作很生涩。

因为我对运动的平滑度不满意,所以我决定尝试“渲染”到一个非常大的工作区位图,然后将其下采样到 TPaintBox 画布。为了进行重新采样,我使用了我在这里读到的 Graphics32 库:

在 Delphi 中很好地缩放图像?

我更改了我的代码以渲染为一个大的 TBitmap32 (1100w x 1100h),然后当我对其进行下采样时,我使用带有 TLanczosKernel 内核的 Graphics TKernelResampler 对象对另一个大小与TPaintBox Canvas 并调用 TPaintBox 的 Refresh 方法。在 TPaintBox OnPaint 事件中,我 BitBlt() 将 TBitmap32 下采样到 TPaintBox 画布。

这可行,但问题是我只在拥有 TPaintBox 的表单需要重绘时才看到重绘,尽管我在完成渲染后立即在 TPaintBox 上调用了 Refresh 方法,但旧代码没有这个问题正如我所说的那样。作为有效性测试,我在大型高分辨率 TBitmap32 对象和用于预渲染的较小 TBitmap32 对象上调用了 SaveToFile()。位图显示,在 Timer 事件之间,帧的内容确实没有改变,所以这不是一个奇怪的重绘相关问题,至少 TPaintBox 组件没有。

如果我通过移动表单或用另一个表单覆盖其客户区的任何部分来使表单的画布无效,那么 TBitmap32 对象的内容会更新,我保存到磁盘作为检查的位图图像也会更新。

就好像 Graphics32 TBitmap 对象本身需要失效,以便更新我渲染到大型高分辨率工作区的新内容。但是,TBitmap32 没有这样的无效/刷新调用。

如果那里有人对 Graphics32 库有经验并且可以告诉我为什么我只在表单需要重新绘制或它的客户区无效时才看到图像发生变化,那么我将不胜感激。

0 投票
3 回答
24627 浏览

java - 如何正确地使 JSP 会话无效?

所以这就是问题所在。当用户退出我的网站时,他们仍然可以点击后退按钮并继续使用该网站。为了跟踪用户是否登录,我创建了一个会话属性“isActive”。该属性在用户登录时设置为 true,并且在会话在注销时失效之前(冗余)被删除。同样在每个页面上,我都会检查该属性是否存在。

我还指定页面不应缓存在其头部标签中。

尽管如此,用户仍然可以回击浏览器,并继续使用该网站,就好像他们从未注销过一样。

关于如何解决这个问题的任何想法?

这是代码:

登录小服务程序:

检查登录 JSP:

注销 Servlet:

内头标签:

谢谢

0 投票
1 回答
607 浏览

android - 将哪些参数传递给 android 上的谷歌地图无效(左、上、右、下)?

我将什么参数传递给这个函数?

无效(左,上,右,下)

与安卓上的谷歌地图一起使用?

谢谢

- 阿山

0 投票
1 回答
2379 浏览

android - 在 Android 的异步任务线程中调用无效的问题!

我正在尝试从 asyntask 线程调用 invalidate() 。我收到此错误:

10-18 15:14:30.469: ERROR/AndroidRuntime(889): Caused by: android.view.ViewRoot$CalledFromWrongThreadException: 只有创建视图层次结构的原始线程才能触摸其视图。

我使用的线路是:

mainClass.myMapView.invalidate();//mainClass=主UI类

谁能提出我的错在哪里?

谢谢。

- 阿山

0 投票
2 回答
299 浏览

iphone - 如何设置iphone app有效期一年?

我希望我的应用在第一次安装一年后失效。我正在使用网络服务来存储 apns 的设备 ID,并考虑使用它存储第一个安装日期。但我想也许有一种方法/方法可以在提交应用程序时在 sdk 或应用商店设置验证期。有什么简单的方法吗?提前谢谢。

0 投票
2 回答
2285 浏览

c++ - 迭代器失效规则

在 STL 容器类(Vector、Dequeue、list、map、multimap、set、multiset)上操作时迭代器失效的通常规则是什么。是否可以对 C++ STL 程序员在使用容器及其迭代器时必须注意的一些一般规则/指南进行分类和总结?

0 投票
2 回答
335 浏览

caching - 相互依赖的缓存失效和内存管理

我正在开发一个 Java 项目,该项目大量使用观察者模式来确保每个数据对象状态都是最新的。我厌倦了维护这种混乱,并试图实现一个解决方案,将观察者模式的恐惧与我宝贵的数据对象分离。

我能够抽象出这个项目的细节,说我要解决的问题如下:

存在一组表示表达式的对象,每个对象都可以依赖于其他表达式的值。

需要以下两个操作:

eval():检索给定表达式的值

此操作应返回表达式的最新值,如果所有表达式依赖项现在将重新评估,则将返回该值。但是,除非第二个操作使它的缓存无效,否则不应对表达式进行多次评估:

update():修改给定的表达式

此操作使表达式和所有当前缓存的直接或传递依赖它的表达式的缓存无效。

此外,还需要一些方便的无内存泄漏方式来管理表达式的生命周期。

伪代码中的所需用法示例:

OK,功能部分讲完了,接下来就是内存管理部分了。

开发人员必须有一些简单的方法来管理表达式图。理想情况下,分配应该使用 来完成new Sum(a,b),开发人员应该可以自由地传递表达式实例,而无需太多关于缓存的知识,并且释放应该自动发生,无需开发人员付出任何努力。

并且不能有任何内存泄漏。也就是说,当一个表达式被释放时,与它相关的内存中不能有任何东西。例如,如果要使用观察者模式进行失效,则必须从所有观察者列表中删除该表达式。

问题是:

你用你最喜欢的语言实现这个的方法是什么?

非垃圾收集和函数式语言也受到欢迎,尤其是函数式,因为我根本不明白如何在纯函数式中解决这个问题。

从我的角度来看,最好的解决方案是开发人员错误可能性最小的解决方案。

我故意不发布我当前的实现细节,因为我认为我在我的实现中发现了一个根本缺陷,而且我看不到任何解决方法。不过我稍后会发布。

0 投票
4 回答
2914 浏览

c++ - 调用擦除时 STL 迭代器失效的问题

STL 标准定义,当 std::deque、std::list 等容器上发生擦除时,迭代器将失效。

我的问题如下,假设包含在 std::deque 中的整数列表和一对指示 std::deque 中元素范围的索引,删除所有偶数元素的正确方法是什么?

到目前为止,我有以下内容,但是这里的问题是假定的结束在擦除后无效:

检查 std::remove_if 是如何实现的,似乎正在进行一个非常昂贵的复制/下移过程。

  • 有没有更有效的方法来实现上述目标而无需所有的复制/移位

  • 一般来说,删除/擦除元素比将其与序列中的下一个第 n 个值交换更昂贵(其中 n 是到目前为止已删除/删除的元素数)

注意:答案应该假设序列大小非常大,+1 百万个元素,并且平均有 1/3 的元素会被擦除。

0 投票
2 回答
3008 浏览

iphone - 进入后台时使 NSTimer 无效

当我的应用程序进入后台时,我试图使计时器无效。当您点击启动计时器并且位于 TimerController.m 文件中的按钮时,将调用计时器。这是它被调用的方式。

现在,我想在应用程序进入后台时使 mytimer 无效,所以我尝试将 [mytimer invalidate]; 进入应用程序委托的 - (void)applicationDidEnterBackground:(UIApplication *)application 方法。但这不起作用,因为它没有在委托中声明。我认为通过将 TimerController.h 包含到委托中,这会起作用,但不会。

所以,我显然不知道我在这里做什么。你能帮我吗?当应用程序进入后台时,它是如何让 mytimer 失效的?