问题列表 - 第41322页

Android,暂停和恢复处理程序回调

我有一个处理程序,我使用如下:

handler.postDelayed(Play, 1000);
Run Code Online (Sandbox Code Playgroud)

当我的应用程序onPause()在完成之前被调用时,我需要暂停它并告诉它不要执行"postDelayed"直到我恢复.

这是可能的,还是有另一种方式?

我的问题是,当调用onPause()时,我暂停音频(SoundManager),但如果此后调用此handler.postDelayed,音频将不会暂停,并将继续在后台播放我的应用程序.

@Override
public void onPause()
{
  Soundmanager.autoPause()
}
Run Code Online (Sandbox Code Playgroud)

但是1000ms后的postDelayed再次启动音频播放.

android callback handler

12
推荐指数
3
解决办法
2万
查看次数

如何使用TailCalls?

如果我理解正确,可以使用scala.util.control.TailCalls通过使用trampoline来避免非尾递归函数的堆栈溢出.API中给出的示例很简单:

import scala.util.control.TailCalls._

def isEven(xs: List[Int]): TailRec[Boolean] =
   if (xs.isEmpty) done(true) else tailcall(isOdd(xs.tail))

def isOdd(xs: List[Int]): TailRec[Boolean] =
   if (xs.isEmpty) done(false) else tailcall(isEven(xs.tail))

isEven((1 to 100000).toList).result 
Run Code Online (Sandbox Code Playgroud)

但是,更有趣的情况是,如果要在重新调用之后执行某些操作.我有一个"天真"的因子实现以某种方式运行

def fac(n:Long): TailRec[Long] = 
    if (n == 0) done(1) else done(n * tailcall(fac(n - 1)).result)
Run Code Online (Sandbox Code Playgroud)

但这看起来很可怕,我怀疑这是用途.所以我的问题是如何使用TailCalls正确编写阶乘或斐波纳契函数(是的,我知道如何使用累加器来使它们尾递归)?或者TailCalls不适合这种问题吗?

scala tail-recursion trampolines

19
推荐指数
2
解决办法
1925
查看次数

如何更改Flex中的Tab键排序(Actionscript,SDK 3.5)

flex选项卡的顺序对于可用性(显而易见)和可访问性(它定义了屏幕阅读器读取顺序)都很重要.但是,Flex 3.5似乎没有任何支持来影响更复杂的应用程序.

据我所知,到目前为止:

  • 选项卡排序由mx.managers.FocusManager计算,它负责整个应用程序的一个"选项卡循环"(即每个容器没有一个,但整个应用程序只有一个).嵌入.swf文件和弹出窗口是个例外,每个文件和弹出窗口都有自己的FocusManager.

  • FocusManager中的逻辑标记为私有,并且该类在Application.initialize()中实例化,因此更改行为并不容易(不能重写SDK的部分,这可能会造成许可证麻烦)

  • Tab键顺序查找每个组件tabIndex(int)属性.具有此属性集(> 0)的所有组件按其值排序,否则使用可视层次结构(使用容器内的容器嵌套和子顺序).

  • 没有tabIndex的所有组件都被排序为在它设置的组件之后(内部,"tabIndex not set"映射到"tabIndex = int.MAX_VALUE")

  • 具有相同tabIndex的两个组件按可视层次结构排序.

这意味着您可以通过可视化层次结构使用自动排序(主要是您想要的)或者您可以直接使用指定tabIndexes - 但如果您这样做,则完全拧紧自动排序.如果您使用自定义组件并希望更改其中的选项卡顺序,则这一点尤其糟糕:一旦执行此操作,您就会破坏使用组件的所有屏幕的Tab键顺序.此外,您不能仅在最高级别的mxml文件上设置选项卡排序,因为您通常无法访问所使用组件的内部工作方式.

例:

accVerticalStuff.mxml

<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml">

    <mx:Label text="One"/>
    <mx:TextInput tabIndex="1" id="One" />

    <mx:Label text="Two" />
    <mx:TextInput tabIndex="2" id="Two"/>

    <mx:Label text="Three" />
    <mx:TextInput tabIndex="3" id="Three"/>

</mx:VBox>
Run Code Online (Sandbox Code Playgroud)

Application.mxml

预期结果:选项卡顺序首先是左侧的三个垂直项目,然后是右侧的三个垂直项目,即按容器分组.TopLevelElement是Tab键顺序中的第一个.(如果没有指定tabIndex,它会以这种方式正常工作,但是我们无法将tabIndex更改为例如切换One和Three,无论出于何种原因我们可能会这样做)

实际结果:选项卡排序是水平的,即在两个输入表单之间跳转.TopLevelElement(未指定tabIndex)是Tab键顺序中的最后一个.

更改容器的嵌套在模块化项目中不起作用,更改子项的顺序会影响它们的显示位置(而使用Canvas容器会丢失AutoLayout).

有没有办法(可能很复杂,但最好不要重写SDK)来指定单个组件的标签排序,而与其他组件无关?

如果所有其他方法都失败了,升级到Flex4有助于解决这个问题吗?

apache-flex flash actionscript-3 tab-ordering

5
推荐指数
1
解决办法
9238
查看次数

使用C#如何检测Windows Installer 4.5是否已安装

我试图找出确定Windows Installer 4.5是否安装在计算机上的最有效方法.

我有一个2.0应用程序(此时无法转换为3.5),我们正在从MSDE升级到SQL 2008 Express.2008 Express的要求之一是在计算机上安装了Windows Installer 4.5.此应用程序全局部署到内部网络内外的计算机上.

我更喜欢运行批处理文件或C#代码来确定安装程序版本.

请让我知道您推荐的方法,并提供一些代码(或代码链接).

谢谢!

.net c# windows installer

7
推荐指数
1
解决办法
3021
查看次数

C#.NET MDI在以编程方式隐藏并再次显示最大化子表单时出现错误,并且在最大化时,无法更改子表单的图标

基本上我在使用C#.NET MDI时遇到两个问题.你可以下载VS2010解决方案,它可以在这里重现bug .

1)当以编程方式隐藏并再次显示最大化的子表单时,它不会再次正确最大化并且既不会最大化也不会处于正常状态.

childForm = new Form();
childForm.Text = "Child Form";
childForm.MdiParent = this;

...

private void showButton_Click(object sender, EventArgs e)
{
    childForm.Visible = true;
}

...

private void hideButton_Click(object sender, EventArgs e)
{
    childForm.Visible = false;
}
Run Code Online (Sandbox Code Playgroud)

当子表单最大化,然后再逐步隐藏和显示时,它会变成这样的(请注意菜单栏 - 子表单的控件框出现,但子表单没有最大化):

替代文字

在这个阶段,儿童形式不能四处移动.但是,我找到了一个解决方法,只需显示并隐藏一个虚拟子表单,这会强制实际的子表单正确最大化.但这会使MDI区域闪烁.尝试了Invalidate,Refresh,Update方法,但它们没有帮助.也许还有其他的解决方法可以克服这个错误,而不是让MDI区域与虚拟子表单闪烁?

private void workaround1Button_Click(object sender, EventArgs e)
{
    dummyForm.Visible = true;
    dummyForm.Visible = false;
}
Run Code Online (Sandbox Code Playgroud)

2)当子表单最大化时,子表单的图标显示在菜单栏上.但是,如果您必须在子窗体最大化时更改图标,则菜单栏上的图标不会刷新(请参见上图).我找到了一个解决方法,它基本上隐藏并显示菜单栏.图标会刷新,但它会使菜单栏下方的所有内容都闪烁.尝试了Invalidate,Refresh,Update方法,但它们没有帮助.有没有其他方法可以使菜单栏刷新子表单的图标?

private void workaround2Button_Click(object sender, EventArgs e)
{
    menuStrip.Visible = false;
    menuStrip.Visible = true;
}
Run Code Online (Sandbox Code Playgroud)

此外,我注意到,当父窗体是处于正常的窗口状态模式(没有最大化),你的1个像素改变窗体的宽度或高度,子窗体变为最大化,因为它应该是和子窗体的菜单栏上的图标就会正确刷新和你不需要我上面描述的其他解决方法.如果我逐个更改表单的大小,请将表格闪烁1个像素,当父表单最大化时,我不能这样做.有什么办法,我怎么能调用,当你调整窗体被称为以及使子窗体最大化成为正确和菜单栏上的图标刷新重绘/刷新功能?

.net c# mdi

8
推荐指数
1
解决办法
5481
查看次数

如何跨更新保留Mac上的CAcerts密钥库?

Mac OS X在/System/Library/Frameworks/JavaVM.framework/Home/lib/security/cacerts中有CA密钥库.这个密钥库似乎被每个Java更新覆盖,这非常烦人,因为我们有内部CA用于开发环境,测试...

有没有办法在Apple JSR中保留密钥库更改,现在,使用Snow Leo JSR3,还可以跨越单独的Java开发人员包(其JDK使用相同的密钥库)的更新?

java macos keystore osx-snow-leopard

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

使用apache mod proxy删除基本身份验证标头

我有一个HTTP Basic安全网站.我用mod_proxy隐藏了一个Tomcat应用服务器.我可以删除HTTP Basic标头吗?Tomcat应用程序读取标头并返回未授权的401.不需要基本身份验证,因为应用程序使用cookie会话.所以我认为删除标题会很好.

apache mod-proxy basic-authentication

15
推荐指数
2
解决办法
3万
查看次数

如何捕获谷歌地图的无效API密钥

我有这个代码:

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;key=babab" type='text/javascript'></script> 
Run Code Online (Sandbox Code Playgroud)

如果密钥无效,则会弹出警报,但我想在这种情况下执行某些操作.我不知道如何勾选它.有任何想法吗?

javascript google-maps

17
推荐指数
2
解决办法
6838
查看次数

在golang中旋转切片的有效方法

我需要一个函数来有效地反转golang中的切片.(我的具体需求是反转[]字节的前缀).

我查看了Effective Go中的示例,objdump -Sd并生成了大量的样板来检查数组索引.即使交换效率也太低.

reverse go micro-optimization

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

记录骆驼路线

我在我的项目中有几个Camel上下文,我想以逆向工程的方式记录路由,因为我们希望保持文档与上下文相关的最新.什么是最好的方法?

java xml eclipse spring apache-camel

5
推荐指数
1
解决办法
2297
查看次数