|
转自煮机用户jarryson 的贴子:
# X; N I) r( y, `& f u5 g0 q$ }
短信死机是因为短信过长,可能超过通知栏的缓冲区,而系统无法处理这类异常。通过哪个过长补丁,是只限制显示前面20个字符可以解决死机问题。但是这样会出现白色方块。
0 a6 g* @, e7 b8 R' F6 Y" A7 \3 `2 p, O8 n* ?" O
很多人说出现方块是因为内存不足。但是无法解释此后所有程序使用通知栏,无论中文英文都方块。
- B9 u3 @& T9 m3 o' |/ e% z* @% [0 G( L1 L
其实更可能的原因是中文是双字节,而通过过长补丁修改后,截取前面20个字符,正好截取到中文字符的一半,此后所有的字符都成了不可识别字符,当然无法显示了。Webos类似的BUG实在是太多了。比如波浪任务栏。
' L- U1 k# x P* O5 x M. a3 Y( j) h% f- Z# J6 I
Private补丁通过不让显示消息内容实现避免死机和出现方块。这里的实现也是类似的,不过不是直接修改系统文件,而是通过中文语言文件。
, j: |' l2 Y# \7 E; ~- J
) O2 X3 N; G' o4 f+ a; @9 q7 B尽量少修改系统文件的好处是减少补丁冲突的可能。修改语言文件更加灵活。无论你打了以上哪个补丁都不冲突,这一个优先级更高。
" _* ?: G2 s5 m6 m
% w5 ~+ t4 V; i, k方法如下:" j* W8 `; N) ?9 ~1 v- V+ L
修改/usr/palm/applications/com.palm.app.messaging/resources/zh/cn/strings.json,! O5 H9 r% f; {# }
在中间加上一行,注意不是放在最后的话,结尾必须带逗号6 X z* j5 q; M9 @3 H
7 p) Y8 h& c, P/ M4 B# ^1 V0 J- { "#{name}: #{message}": "#{name}的短信",
9 R' c! {" {# u% B2 `
$ }7 V O. K; b; l, W& f相信原理一看便知道了。原代码这一段是可以自定义成多国语言的,因此直接汉化,不显示后面的变量即可。
) }' B# k9 q4 G) [! ]7 g1 k6 o2 `3 Z9 {+ E1 p4 |: s
* l6 }3 U; P* U' I$ ?$ W
该贴已经同步到 bestip的微博 |
|