首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >J2ME手机对不兼容的套餐有自动禁用功能吗?

J2ME手机对不兼容的套餐有自动禁用功能吗?
EN

Stack Overflow用户
提问于 2011-08-11 21:21:23
回答 3查看 104关注 0票数 2

我想知道,例如,如果我开发了一个包含两个WMA包(1.1和2.0)的应用程序,然后将其部署到只支持WMA 1.1的旧手机型号上,手机会禁用2.0包吗?

代码在不同的软件包之间没有什么不同,但2.0软件包为该代码提供了额外的功能,这最终对更新的手机来说是最优的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-13 23:30:37

我会考虑使用Class.forName来加载适当的代码,这取决于设备是否支持WMA2

代码语言:javascript
复制
class SpecificFeatureFactory {
    SpecificFeature get(boolean isWma2) {
        return (SpecificFeature)Class.forName(isWma2 ? "Rich" : "Poor");
    }
}

class Rich implements SpecificFeature {
    @Override
    long doSomething(String className, Date dateAlarm) throws Exception {
        return PushRegistry.registerAlarm(className, dateAlarm);
    }
}

class Poor implements SpecificFeature {
    @Override
    long doSomething(String className, Date dateAlarm) throws Exception {
        return -1;
    }
}

interface SpecificFeature {
    long doSomething(String className, Date dateAlarm) throws Exception;
}

根据我的记忆,WMA规范描述了应用程序如何确定它是1.1还是2.0

票数 2
EN

Stack Overflow用户

发布于 2011-08-11 21:27:57

这将是一个错误的旧手机,这不支持新的功能。

使用Preprocessor从一个源代码包中为新旧手机编译不同的版本。

票数 1
EN

Stack Overflow用户

发布于 2011-08-12 01:46:48

如果大小不是问题,那么就不一定要使用预处理。如果你不使用只存在于WMA2.0中的类,你就会被NoSuchMethodErrors绊倒。考虑这样做。

代码语言:javascript
复制
public void doSomeThing()
{
  try{
    callWMA2_0Method();
  }
  catch( NoSuchMethodError e )
  {
    // We're WMA 1.1 then 
    callWMA1_1Method();
  }
} 

当然,您只能使用WMA 2.0进行编译。但这应该不是问题

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7026604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档