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版本设置以后,均顺利生成。