文件: /data/data/com.motorola.android.providers.settings/databases/settings.db
第105项,‘sms_force_7bit_encoding’,值由‘1’改成‘0’ ;
第107项,‘force_only_market_apps’, 值由‘1’ 改成 ‘0’;
Read: 1126
文件: /data/data/com.motorola.android.providers.settings/databases/settings.db
第105项,‘sms_force_7bit_encoding’,值由‘1’改成‘0’ ;
第107项,‘force_only_market_apps’, 值由‘1’ 改成 ‘0’;
Read: 1126
src:http://fanchi.javaeye.com/blog/315875
找到 etcnetbeans.conf
添加-J-Dfile.encoding=UTF-8参数
netbeans_default_options=”-J-Dfile.encoding=UTF-8
Read: 600
src: http://www.javaeye.com/topic/420224
在j2me联网时,在eclipse控制台下有一个警告:“若要避免潜在的死锁,应该在commandAction()处理程序之外的其他线程中执行可能 会阻塞的,操作(如网络连接)。
为了避免潜在的死锁,我们经常把把联网的代码部分写到一个线程中去执行。
而实际应用中,网络连接的事务也都是使用一个单独的线程进行的。
线程的创建可以使用Runnable接口来实现,也可以使用Thread类实现,还可以以匿名内部类的方式创建。在本文中,分别用这三种方式给出 了j2me联网的例子。
代码均测试通过。可以直接使用。
1.通过继承Thread类创建
/** * 测试Thread类线程 * @author mfcai */ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class OpenConn implements Runnable { private HttpURLConnection conn; private URL url; // Thread thread1; public OpenConn(String url) throws MalformedURLException { this.url = new URL(url); } public void run() { try { conn = (HttpURLConnection) url.openConnection(); } catch (IOException e) { e.printStackTrace(); url = null; } } public HttpURLConnection getConn() { return conn; } public static void main(String[] args) throws Exception { // 创建Runnable类 OpenConn openConn = new OpenConn("http://www.google.com"); // 创建线程 Thread thread = new Thread(openConn); // openConn.thread1=thread; thread.start(); thread.join(10000);// wait 10 seconds HttpURLConnection c = openConn.getConn(); if (c != null) { System.out.println("连接网络成功..."); BufferedReader r = new BufferedReader(new InputStreamReader(c .getInputStream())); String s = r.readLine(); while (s != null) { System.out.println(s); s = r.readLine(); } } else { System.out.println("超时错误,连接网络失败..."); } } }
2.通过引用Runnable接口创建
/** * 测试Runnable接口线程 * @author mfcai */ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class OpenConn2 extends Thread { private HttpURLConnection conn; private URL url; public OpenConn2(String url) throws MalformedURLException { this.url = new URL(url); } public void run() { try { conn = (HttpURLConnection) url.openConnection(); } catch (IOException e) { e.printStackTrace(); url = null; } } public HttpURLConnection getConn() { return conn; } public static void main(String[] args) throws Exception { OpenConn2 openConn = new OpenConn2("http://www.google.com"); openConn.start(); openConn.join(10000);// wait 10 seconds HttpURLConnection c = openConn.getConn(); if (c != null) { System.out.println("连接网络成功..."); BufferedReader r = new BufferedReader(new InputStreamReader(c .getInputStream())); String s = r.readLine(); while (s != null) { System.out.println(s); s = r.readLine(); } } else { System.out.println("超时错误,连接网络失败..."); } } }
3.以匿名内部类的方式创建
即在一个方法中创建线程,当方法被调用时,线程即启动,如下:
/** * 测试匿名线程线程创建 * @author mfcai */ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class OpenConn3 { private HttpURLConnection conn; private URL url; public static void main(String[] args){ try{ OpenConn3 open3= new OpenConn3(); open3.strartMyThread(); }catch(Exception ex){ System.out.println(ex.toString()); } } public void strartMyThread() throws Exception{ this.url =new URL("http://www.google.com"); java.lang.Runnable runner=new Runnable(){ public void run(){ try { conn = (HttpURLConnection) url.openConnection(); } catch (IOException e) { e.printStackTrace(); url = null; } } }; Thread openConn=new Thread(runner); openConn.start(); openConn.join(10000);// wait 10 seconds if (conn != null) { System.out.println("连接网络成功..."); BufferedReader r = new BufferedReader(new InputStreamReader(conn .getInputStream())); String s = r.readLine(); while (s != null) { System.out.println(s); s = r.readLine(); } } else { System.out.println("超时错误,连接网络失败..."); } } }
转载请注明作者和出处。
Read: 1072
src: http://www.donews.com/Content/201003/ce107084fcb3466ca88b6a2d1b7fc0c6.shtm
观察家
上周末,一群黑衣人聚集在美国丹佛市某会所内,举行了一场葬礼。葬礼现场烛光摇曳,鲜花环绕,悼词卡片放在逝者的棺材周 围。唯一古怪的是,棺材中的“逝者”没有头,它的头部被一张光盘封套取代———上面的遗容是IE6的徽标。这是一场为IE6浏览器举办的非官方葬礼——尽 管据说微软官方的IE6开发小组也送来了卡片,怀念“那段美好的时光”。
近年来,IE6无论在安全方面,还是在支持互联网新标准方面, 都越来越老态龙钟。震惊世界的Google被黑客入侵事件,其来源就是IE6的一个漏洞;在上述IE6葬礼的官方网站上,也有哀悼者留言:“我不得不无数 次收拾我父亲的计算机,因为他用您观看网络色情内容……好好在地狱里燃烧自己吧,那是你该呆的地儿”。
尽管如此,IE6短期内仍然不会 被淘汰。业内人戏称,能让IE6死的,只有微软自己;可是微软连续发出IE7、IE8两张王牌,IE6却仍岿然不动。要论置IE6于死地的决心,微软其实 不比Google小——它已经挡了接班人的路。
这种尴尬境地,其实反映了微软自己在产业体系上的短板。整个微软-英特尔体系的起家契 机,是PC机体系架构的开放;当大量有生产能力的硬件厂家都能生产PC机时,必需的CPU芯片和操作系统便成为战略物资。但在互联网时代,微软已经不复 1980年时的轻松潇洒。现在要背负封闭体系负担的是它自己。一代一代的windows,为了保持与以前软件、设备的兼容,不得不容忍软件体积的空前膨 胀。到了WindowsXP的继任者Vista推出时,这个操作系统的代码量达到了5000万行,动用了9000名程序员。第一代的windows95只 有1500万行。微软自己拖死了自己,才导致Vista在开发三年之后,于2004年突然全部推翻重来。这个夭折,带来了XP的空前长寿,连带着使XP中 捆绑的IE6成为软件界的奇迹。
中国又是另一种情况。尽管IE6随XP捆绑,但此后的IE7、IE8,和诸多第三方浏览器如 firefox、chrome、safari等,均开放了免费下载,安装也并不复杂,在使用体验上更是远远超过了IE6。因此,在计算机比较普及的欧美国 家,这些非IE浏览器的市场份额不断增加;在欧洲,firefox甚至在2009年还超越了IE6,成为市场份额第一的浏览器。
但在中 国,即使号称拥有三亿网民,“互联网潜力最大”,在互联网的应用方面却仍然停留在极为原始的水准。IE6尽管无法完整地显示那些美轮美奂的效果、实现高效 的互动,但在偷菜、卖奴隶、逛网店方面已经绰绰有余了。firefox等优秀浏览器在欧洲大出风头的2009年,中国的IE6份额居然反弹到69%。落后 的浏览器背后,反映的是中国互联网低效、重复的应用开发水准。相应地,中国所有银行的网银,现在都只支持IE系浏览器,这成为世界金融界的奇观。
阴差阳错的业界现实造就了IE6的长寿,而在微软宣布的正式寿命——2014年——之前,IE6的死亡,看来仍有漫漫长路要走。
曹悦 平(北京媒体从业者)
Read: 1191
因为在MIDP手机编程中,没有控制台的概念,所以所有的MIDP手机软件都必须有自己的界面,下面就熟悉一下MIDP的界面类体系。
首先说明的是,MIDP的标准界面类都位于javax.microedition.lcdui包中,使用时一定要记得引入。
在界面体系中,所以可以直接显示的界面类都继承自同一个父类——Displayable。根据是否能直接操作屏幕,以及是否和屏幕尺寸相关,MIDP的界面类分为两大类:
1、 高级用户界面——和屏幕大小无关,不能直接操作屏幕
高级用户界面类可以不需要修改就可以在所有支持Java的手机上显示,不同的手机显示方式会有所不同,但功能均可以正常使用。特别适合做对于界面要求不高的手机应用软件。
高级用户界面中的类又分为两个部分:
l 容器类
容器类是指直接或者是间接继承自Displayable,可以直接在屏幕上显示的类。这些类都有一个统一的父类——Screen类,其他的都是实现的容器类,包括以下几个:
u Alert——提示框
u Form——窗体
u List——列表框
u TextBox——文本盒,多行文本框
以上这些类除了Screen类以外,都代表一类界面,在实际的开发过程中,即可以直接使用(只使用其对象)也可以使用继承。
l 控件类
控件类是指那些不能在屏幕上直接显示,必须添加到容器类(注:MIDP中的所有控件类均只能添加到Form中)才可以显示的类。这些类也有一个统一的父类Item类,其它的都是实现的控件类,包括以下几个:
u ChoiceGroup——选择框,包括单选和多选
u DateFiled——日期文本框
u Gauge——进度条
u ImageItem——图片项目
u StringItem——可变字符串项目
u TextFiled——单行文本框
在MIDP2.0中,新增两个控件:
u CustomItem——个性化项目,可以实现自己的控件
u Spacer——空白
在实际的使用中,根据界面的需要,选择合适的控件种类,然后添加到Form中进行显示。
2、 低级用户界面——和屏幕大小相关,可以直接操作屏幕
低 级用户界面可以让程序员直接操作界面,例如可以在屏幕上方便的绘制图片、文字以及基本的图形等,可以在手机中表现复杂的界面,所以很适合进行手机游戏以及 移动证券之类的软件开发。但是低级界面一般和屏幕大小关系比较密切,所以在不同的手机型号之间实现的时候,一般需要进行移植。
低级用户界面主要包括两个类:
l Canvas——手机画布
该类代表手机屏幕,包含获得屏幕属性的一系列方法、事件处理的方法,以及最核心的paint绘制方法等。在MIDP2.0中该类有一个子类——GameCanvas。
l Graphics——画笔
系统所有的绘制动作都通过该类实现,包含一般的绘制方法、设置字体或颜色的方法以及一些技巧操作的方法等。
低级用户界面可以理解为使用Graphics这样一个画笔类在Canvas上进行绘制。
当然还有一个在高级用户界面和低级用户界面都可以使用的类——Command(软按钮类),使用该类可以在界面中实现软按钮的功能。
在整个界面体系中,除了以上最核心的类以外,还包含一些其他的辅助功能,主要分为如下几种:
1、 高级用户事件处理体系
因为高级用户界面的事件处理采用了监听器(Listener)模式,所以在API中只提供了几个接口:
l CommandListener
处理软按钮(Command)事件。
l ItemStateListener
处理控件(Item)状态改变事件。
l ItemCommandListener——MIDP2.0新增
处理和控件相关的软按钮事件。
2、 低级用户界面辅助类
在实际使用低级用户界面中,经常用到图片、字体等,这些也在界面体系中被实现成具体的类,分别是:
l Font——字体类
l Image——图片类
由于J2ME对J2SE进行了大量的简化,所以颜色没有实现成具体的类,而只是支持RGB格式的表示而已。
以上系统的介绍了MIDP的界面类体系,希望能使您对于界面类结构有更加深刻的认识。不足之处请积极指正!
来源:http://bbs.csai.cn/dispbbs.asp?boardid=56&Id=100957&page=7
Read: 842