小编Dav*_*ven的帖子

Android 上的自定义鼠标指针

当使用现代版本的 Android(Honeycomb 或更高版本)时,如果硬件合适,则支持显示鼠标指针。例如,在 ASUS Transformer 或 Toshiba AC100 笔记本电脑上。

是否有任何 API 允许在这些设备之一上运行的应用程序以编程方式更改其鼠标指针?(或者在应用程序窗口中完全隐藏指针。)

android android-3.0-honeycomb

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

Eclipse的自定义构建规则

我有一个使用一些自动生成的源代码的Java项目.这个源代码是由命令行工具--- Bison生成的,实际上是来自一个特殊的源文件.

当我按下Eclipse中的"构建"按钮时,我想在必要时自动重新生成Java源代码.这是可能的,如果是的话,怎么样?

通常我会将它集成到项目makefile中,但当然这是Java,它不使用makefile.我看过蚂蚁,但蚂蚁似乎对传统的命令行工具充满敌意.我知道的东西一样,这是可能与内置的Eclipse建设者,因为Android的开发工具做它; 那它在做什么?

java eclipse build-process

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

当客户端附加和分离到 Android 服务时收到通知

我有一个 Android 服务,它通过 AIDL 导出 RPC 接口。该接口是面向连接的,客户端将连接到它,与其进行事务处理,然后在退出时断开连接。

不幸的是,客户端异常退出,例如被系统杀死,它永远没有机会告诉RPC接口连接已关闭。这导致了问题。

当新客户端附加到接口或从接口分离时,有什么方法可以让服务自动收到通知吗?我找到了onBind()onUnbind(),但它们不是同一件事;他们告诉我该接口是否正在使用。onUnbind()仅当最后一个客户端分离时才会被调用。

有任何想法吗?(并且服务的设计是由外部需求控制的,无法更改......)

更新:我完全忘记提及我已经看过了linkToDeath(),它几乎完全符合我的要求,但它似乎只是以相反的方式工作——它允许客户端在服务终止时收到通知。当我尝试时,似乎什么也没发生。文档有点不完整;有人确定这是否能按我想要的方式工作吗?如果是这样,如何让它告诉我哪个客户死了?

更新更新:我已经解决了这个问题,但只是通过作弊。我重新定义了它。我的应用程序实际上主要是使用 NDK 用 C 语言编写的,因此该服务的设计很奇怪;因此,我将问题转移到 C 世界中,并创建了一个小型帮助程序进程,该进程使用 Unix 域套接字直接与我的应用程序的本机部分进行对话。它速度快、体积小、几乎防弹——但它仍然是作弊行为。因此,虽然我的问题现在已经解决了,但我仍然想知道实际的答案是什么。

android android-service android-binder

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

使用.INTERMEDIATE在makefile中建立不可靠的并行构建吗?

我有一个生成多个输出文件的工具,众所周知,这很难在make中建模。我正在使用GNU Makefile规则中的配方,该规则从单个源文件生成一些目标,这似乎简单可靠。而且几乎可以正常工作。

不幸的是,关于并行构建,我看到了一些非常奇怪的行为,有时似乎会删除依赖关系。我不明白为什么。

这是我的测试用例:

out3: out1 out2
    touch out3

.INTERMEDIATE: out.intermediate
out1 out2: out.intermediate
out.intermediate: in
    touch out1 out2
Run Code Online (Sandbox Code Playgroud)

如果我构建一次,它将起作用:

$ touch in
$ make -f test.mk out3 -j4
touch out1 out2
touch out3
Run Code Online (Sandbox Code Playgroud)

out1并且out2一起建造一次,这很好;然后out3根据结果​​构建。

现在,我触摸输入文件,模拟增量构建,然后重试:

$ touch in
$ make -f test.mk out3 -j4
touch out1 out2
Run Code Online (Sandbox Code Playgroud)

这是重建out1out2,正确的...但它一直没有重建out3,它应该有。然后,如果我执行另一个构建:

$ make -f test.mk out3 -j4
touch out3
Run Code Online (Sandbox Code Playgroud)

...然后赶上了。

适用于并行构建。-j1建立良好的工作。 …

makefile gnu-make

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

区分 Pony 中不同类型的错误?

Pony 有一个未参数化的异常值。

不幸的是,我经常有代码想要抛出不同类型的异常,我需要知道它们是什么以便正确处理它们——例如,简单地说,当停止程序时,向用户提供正确的错误消息很重要!

那么在 Pony 中这样做的惯用方法是什么?

ponylang

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

使gprbuild默认为并行构建?

如何使gprbuild默认执行并行构建?它不再是1990年了,拥有所有这些备用内核,并且不想继续添加-j0到命令行.

根据我对文档的理解,这应该有效:

package Builder is
    for Default_Switches("Builder") use ("-j0");
end Builder;
Run Code Online (Sandbox Code Playgroud)

......但它没有; 它被忽略了.我已经看到了Default_Switches("Ada")应该起作用的互联网的提及,但所有这一切都是将--jobs选项传递给GNAT,这当然是错误的.

ada

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

Ada中不同类型之间的数组切片

我正在阅读的Ada教程说在Ada中这是一个有效的事情:

Large : array (0 .. 100) of Integer;
Small : array (0 .. 3) of Integer;

-- extract section from one array into another.
Small(0 .. 3) := Large(10 .. 13);
Run Code Online (Sandbox Code Playgroud)

但是,当我真正尝试它时,它不起作用.

为了简单起见,我正在使用ideone的在线Ada环境来玩这些东西(上面的链接).教程是错误的,还是指的是一个没有实现的Ada版本?

arrays ada

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

Ada方面是一个私有的包

假设我拥有世界上最愚蠢的环形缓冲区.

size: constant := 16;
subtype T is integer;

package RingBuffer is
  procedure Push(value: T);
  function Pop return T;
end;

package body RingBuffer is
  buffer: array(0..size) of T;    
  readptr: integer := 0;
  writeptr: integer := 1;

  procedure Push(value: T) begin
    buffer(writeptr) := value;
    writeptr := (writeptr + 1) mod size;
  end;

  function Pop return T
  begin
    readptr := (readptr + 1) mod size;
    return buffer(readptr);
  end;
end;
Run Code Online (Sandbox Code Playgroud)

因为我的代码很糟糕,我想添加前置条件和后置条件,以使我不会滥用这个肯定.所以我改变Push的实现如下:

procedure Push(value: T) with
  pre => readptr /= writeptr
is begin
  buffer(writeptr) …
Run Code Online (Sandbox Code Playgroud)

packages ada preconditions

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