java弱终端开发素来以多终端多sdk版本方面的麻烦著称,机顶盒上相关的问题少一些,不过也是同样存在的。
本方案尝试的起因是想在程序中使用interrupt函数结束线程,以便在某些盒子上可以较快的结束工作线程,
但是cldc-1.0中是不支持该函数的,如下:
s_mainThread.currentThread().interrupt();
首先准备两个版本sdk下相应的实现代码
./platform/platform-CLDC-1.0.java
package cldcPlatform;
public class cldcPlatform
{
public static void interrupt(Thread thread)
{
//if(thread != null)
//{
// thread.interrupt();
//}
}
}
./platform/platform-CLDC-1.1.java
package cldcPlatform;
public class cldcPlatform
{
public static void interrupt(Thread thread)
{
if(thread != null)
{
thread.interrupt();
}
}
}
在项目ant脚本中插入自己的预处理脚本,如下:
./nbproject/my_custom_task.xml
<target name="my-post-init">
<echo level="warning" message="${platform.configuration}"/>
<copy file="./platform/platform-${platform.configuration}.java" tofile="./src/cldcPlatform/cldcPlatform.java" overwrite="true"/>
</target>
如此将会在每次编译之前将对应平台的代码覆盖到项目src目录下。
原来调用interrupt的位置则修改为如下形式:
cldcPlatform.interrupt(s_mainThread);
ok,切换项目的cldc版本设置以后,均顺利生成。