当前位置:编程学习 > wap >>

请问高手:Brew中可以实现单例模式吗?

如题:本人做输入法模块,想把输入法接口做成单例模式的,即输入法接口只创建一次,这样不用每个输入框都创建输入法接口,而且可以达到输入数据共享;但怎样保持输入法接口单例呢?好像很难做到唉! --------------------编程问答-------------------- 不难做啊,你再封装一层就是了。 --------------------编程问答--------------------  Brew里面不支持静态变量
但是你可以搞个类似的全局变量
因为你在什么时候都可以GETAPPINSTANCE()拿到application的句柄
所以建议你把你的输入法模块放在application类里面, 就像当于全局了 --------------------编程问答--------------------
引用 2 楼 hhygcy 的回复:
Brew里面不支持静态变量 
但是你可以搞个类似的全局变量 
因为你在什么时候都可以GETAPPINSTANCE()拿到application的句柄 
所以建议你把你的输入法模块放在application类里面, 就像当于全局了

好办法 --------------------编程问答-------------------- 谢谢各位的回复!
2楼的确实是一种可行的办法,可以做到系统里只创建一套输入法接口,
但是付出的代价是要在所有的app里面保存一个输入法接口指针,而且
要在app创建或销毁时增加重复的代码。。。而且输入法要跟控件挂钩
的,这样意味控件里面要通过GETAPPINSTANCE去获取app的输入法指针,
这样错乱的架构我宁愿选择一个输入框创建一套输入法接口。。。 --------------------编程问答-------------------- app创建或销毁时增加重复的代码,必须的呀 --------------------编程问答-------------------- 那想想看,手机里面这么多app,每个app都要去修改唉。。。

而且单例的实现要在widget里面实现,在widget里面获取app

的属性,这种调用我不能忍受唉。。。

有没有更“全局”的,控件级的,类似ISHELL这样的,但是

ISHELL又不能修改。。。 --------------------编程问答-------------------- ISHELL 其实也是全局的 IAPPLET 里面的一个变量, 我们就相当于在里面加了一个变量。 (系统不过是和我们在做一样的事情罢了)
但是你不喜欢这种风格就没有办法了 呵呵 --------------------编程问答-------------------- 你是OEM就可以改输入法控件,不是的话就自己封类似widget这样的控件,封完后,自己再调用控件就可以实现。 --------------------编程问答-------------------- 输入法接口做成单例模式有什么好处呢?

需要的时候创建一个应该比较好吧,这样里面的状态比较独立不会互相影响. --------------------编程问答-------------------- 还有一种方式可以模拟实现全局变量。
找一个module存放即可。。。如果没有一直加载的module可以自己写一个module.

只要把这个输入法的数据放入到共享module中即可。。。 --------------------编程问答-------------------- 请注意,BREW中实现SingleTon没有想象中的简单。 这是因为, 除了实现SingleTon以外, 你还要保证SingleInstance中分配的内存,是在系统环境下分配的。 否则, 单第一个创建单实例接口的App退出后,该接口实例内存会被自动释放,从而导致无效。

对于OEM,实现为Static方式,是很方便的。

而要实现为动态的方式, 如何保证内存分配不是在App环境下的, 就需要一定的技巧了。 因为,默认切换环境的API没有直接对应的接口可以被使用 --------------------编程问答-------------------- 另外,提醒LZ, 单实例是有具体使用场合的,不能想用就用。 

对于输入法接口, 你再好好看看, 应该做成单实例吗?? ??? --------------------编程问答-------------------- 已在OEM层通过static方式实现成单例模式;亦可在线输入; --------------------编程问答-------------------- 需要好好理解单例模式的使用条件
补充:移动开发 ,  Brew
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,