J2ME 技術的學習與實踐者

          #

          [導入]兼容性對J2ME程序設計的確是一個主要的問題!


          網站: JavaEye  作者: iwinyeah  鏈接:http://iwinyeah.javaeye.com/blog/170016  發表時間: 2008年03月11日

          聲明:本文系JavaEye網站發布的原創博客文章,未經作者書面許可,嚴禁任何網站轉載本文,否則必將追究法律責任!

          對于手機理財JAcount,我在SE K750, SE P990,Philips768, Nokia2630上進行過完整的測試,都沒有什么問題.最近,在移動那里一元購機了一臺Nokia6070,原以為與Nokia2630一樣是S40的機器,應該沒什么問題,結果余額表和收支表重復算兩次后出現了"應用程序錯誤",詳情是Array Index out of bounds,我估計是內存不足,于是在重新開啟程序,打開了第一次收支表后檢查了內存,還有300多K,再次打開收支表,又出錯了,還未搞清楚是什么原因,真有點失敗的感覺,前一段時間在聊天時借了別人的Nokia N73,結果安裝時候就死機了,還沒機會檢查是什么問題,現在先弄好Nokia 6070的問題吧.唉!兼容性!
          本文的討論也很精彩,瀏覽討論>>


          JavaEye推薦




          文章來源:http://iwinyeah.javaeye.com/blog/170016

          posted @ 2008-03-11 06:36 iwinyeah 閱讀(105) | 評論 (0)編輯 收藏

          [導入]OpenBaseMovil 設備檢測(2)


          網站: JavaEye  作者: iwinyeah  鏈接:http://iwinyeah.javaeye.com/blog/169545  發表時間: 2008年03月09日

          聲明:本文系JavaEye網站發布的原創博客文章,未經作者書面許可,嚴禁任何網站轉載本文,否則必將追究法律責任!

          唉,有貼代碼騙糧票的嫌疑呢,至少大家可以在這里看到各種設備的規格方法了.
              public static boolean isBlackBerry()
              {
                  return checkPlatform( "RIM" );
              }
          
              public static boolean checkPlatform( final String key )
              {
                  final String platform = System.getProperty( "microedition.platform" );
                  return platform != null && platform.toUpperCase().indexOf(
                          key.toUpperCase()
                  ) > -1;
              }
          
              public static boolean checkUserAgent( final String key )
              {
                  final String userAgent = Application.getManager().getProperty(
                          "user-agent"
                  );
                  return userAgent != null && userAgent.toUpperCase().indexOf(
                          key.toUpperCase()
                  ) > -1;
              }
          
              public static boolean checkPlatform( final String[] keys )
              {
                  final int length = keys.length;
                  for( int i = 0; i < length; i++ )
                  {
                      if( checkPlatform( keys[i] ) )
                      {
                          return true;
                      }
                  }
                  return false;
              }
          
              public static boolean isNokia()
              {
                  return checkPlatform( "Nokia" );
              }
          
              public static boolean isEmulator()
              {
                  return checkPlatform( new String[] { "j2me", "SunMicrosystems_wtk" } );
              }
          
              public static boolean isSonyEricsson()
              {
                  return checkPlatform( "SonyEricsson" );
              }
          
              public static boolean isSonyEricssonJP7()
              {
                  return isSonyEricsson() && checkPlatform( JP7 );
              }
          
              public static boolean isSymbian()
              {
                  return checkUserAgent( "SymbianOS" );
              }
          
              public static boolean isSeries60()
              {
                  return checkUserAgent( "Series60" );
              }
          
              public static boolean isSeries60_2nd()
              {
                  return checkUserAgent( "Series60/2" );
              }
          
              public static boolean isSeries60_3rd()
              {
                  return checkUserAgent( "Series60/3" );
              }
          

          本文的討論也很精彩,瀏覽討論>>


          JavaEye推薦




          文章來源:http://iwinyeah.javaeye.com/blog/169545

          posted @ 2008-03-09 18:55 iwinyeah 閱讀(57) | 評論 (0)編輯 收藏

          [導入]Java 初學者應對以下代碼問個為什么


          網站: JavaEye  作者: iwinyeah  鏈接:http://iwinyeah.javaeye.com/blog/169280  發表時間: 2008年03月08日

          聲明:本文系JavaEye網站發布的原創博客文章,未經作者書面許可,嚴禁任何網站轉載本文,否則必將追究法律責任!

          public void main(){
          	Integer nullInt = null;
          	tryChangeInteger(nullInt);
          	if(nullInt == null){
          		System.out.println("\nThe Object nullInt not be changed.");
          	}else{
          		System.out.println("\nThe Object nullInt now is " + nullInt);
          	}
          }	
          
          private void tryChangeInteger(Integer theInt){
          	theInt = new Integer(100); 
          }
          
          // 控制臺應打印出什么呢?(The Object nullInt not be changed.)
          //
          // 關鍵要理解好Java的參數傳遞是傳值而不是傳引用,因而在tryChangeInteger方法
          // 里得到的theInt不是main方法里的nullInt,而是nullInt的副本,nullInt值并沒有被改變。
          
          // 再請看以下代碼
          
          public void main() {
          	char[] initChars = new char[10];
          	initChars[0] = 'a';
          	tryChangeCharArray(initChars);
          	if(initChars[0] == 'a'){
          		System.out.println("\nThe Object initChars[0] not be changed.");
          	}else{
          		System.out.println("\nThe Object initChars[0] now is " + initChars[0]);
          	}
          }		
          
          private void tryChangeCharArray(char[] theChars){
          	if(theChars != null && theChars.length > 0){
          		theChars[0] = 'b';
          	}
          }
          	
          // 控制臺應打印出什么呢?(The Object initChars[0] now is b")
          // Why?
          // 弄明白了這個,JAVA引用基本就明白了。
          

          本文的討論也很精彩,瀏覽討論>>


          JavaEye推薦




          文章來源:http://iwinyeah.javaeye.com/blog/169280

          posted @ 2008-03-08 07:16 iwinyeah 閱讀(59) | 評論 (0)編輯 收藏

          [導入]OpenBaseMovil 設備檢測(1)


          網站: JavaEye  作者: iwinyeah  鏈接:http://iwinyeah.javaeye.com/blog/168955  發表時間: 2008年03月07日

          聲明:本文系JavaEye網站發布的原創博客文章,未經作者書面許可,嚴禁任何網站轉載本文,否則必將追究法律責任!

          以下代碼由bm.core.tools.DeviceInfo.java抽出,詳見該文件
              private void testFontListBug()
              {
                  if( isNokia() )
                  {
                      // 就算是Nokia的設備也要進行一下測試來確定是否有這個Bug
                      final Font font = Font.getFont(
                              Font.FACE_PROPORTIONAL,
                              Font.STYLE_PLAIN,
                              Font.SIZE_SMALL
                      );
                      final List list = new List( "", List.IMPLICIT );
                      for( int i = 0; i < 3; i++ )
                      {
                          list.append( "", null );
                      }
                      for( int i = 0; i < 3; i++ )
                      {
                          list.setFont( i, font );
                      }
                      list.deleteAll();
                      try
                      {
                      for( int i = 0; i < 4; i++ )
                          {
                              list.append( "", null );
                          }
                          listFontBug = false;
                      }
                      catch( Throwable e )
                      {
                          listFontBug = true;
                      }
                  }
                  else
                  {
                      // 除Nokia設備外,其它設備都假定它有這個Bug
                      // 不知道實際上是不是這樣呢?我估計大部分的手機都有這個問題
                        // 不然他不會這么做
                      listFontBug = true;
                  }
              }
          
          

          那么這個Bug是什么呢?
          我在bm.mvc.ListBrowserView中找到如下代碼:
              if( !DeviceInfo.getDeviceInfo().hasListFontBug() )
              {
                  final int itemCount = list.size();
                  for( int i = 0; i < itemCount; i++ )
                  {
                      list.setFont( i, Util.SMALL_FONT );
                  }
              }
          

          也就是說,有這個Bug的設備不能將List的項的字體更改為SMALL_FONT
          本文的討論也很精彩,瀏覽討論>>


          JavaEye推薦




          文章來源:http://iwinyeah.javaeye.com/blog/168955

          posted @ 2008-03-07 09:46 iwinyeah 閱讀(76) | 評論 (0)編輯 收藏

          [導入]OpenBaseMovil Nokia s60, 6670,e71,e61問題?


          網站: JavaEye  作者: iwinyeah  鏈接:http://iwinyeah.javaeye.com/blog/168522  發表時間: 2008年03月06日

          聲明:本文系JavaEye網站發布的原創博客文章,未經作者書面許可,嚴禁任何網站轉載本文,否則必將追究法律責任!

             private void doShow()
              {
                  // This delays minimze the chance that a Nokia 6670 or Nokia S60 3rd
                  // edition device (might apply to other nokias) freez when showing a
                  // view. The total delay of 600ms, with this distribution seems to
                  // make it stable on E70 and E61. The delay is only applied to Nokia
                  // phones at this moment
                  if( displayable != null )
                  {
                      final Display display = Application.getManager().getDisplay();
                      delay();
                      delay();
                      display.setCurrent( displayable );
                      if( !DeviceInfo.isNokia() && focusedItem != null )
                      {
                          delay();
                          delay();
                          display.setCurrentItem( focusedItem );
                      }
                      setCurrent( this );
                      delay();
                      delay();
                  }
              }
          
              private void delay()
              {
                  if( delay )
                  {
                      // Under some strange circumstances the Nokia 6670 crashes whitout this delay
                      try
                      {
                          Thread.sleep( 100 );
                      }
                      catch( InterruptedException e )
                      {
                      }
                  }
              }
          
          


          是否的確是這樣?天啊,誰可以使用以上環境的設備給我測試一下我的手機理財JAccount呢?
          本文的討論也很精彩,瀏覽討論>>


          JavaEye推薦




          文章來源:http://iwinyeah.javaeye.com/blog/168522

          posted @ 2008-03-06 07:54 iwinyeah 閱讀(113) | 評論 (0)編輯 收藏

          [導入]強烈建議安裝Jode Decompiler


          網站: JavaEye  作者: iwinyeah  鏈接:http://iwinyeah.javaeye.com/blog/168521  發表時間: 2008年03月06日

          聲明:本文系JavaEye網站發布的原創博客文章,未經作者書面許可,嚴禁任何網站轉載本文,否則必將追究法律責任!

          如果你用Eclipse開發java應用的話,我強烈建議你安裝它,這樣,你隨時可解開jar文件瀏其他人特別是SUN公司的源代碼了(SUN的JAR沒有經過混淆),對于學習java是十分有益而高效的.
          Eclipse/軟件更新/查找與安裝/新建遠程站點/地址為:http://www.technoetic.com/eclipse/update

          安裝完成后,要使用時,在包資源管理器上列出你要查看的class,雙擊該文件,會出現錯誤提示,不理它,再雙擊一次就可以在編輯器上出現源代碼了!超方便!
          本文的討論也很精彩,瀏覽討論>>


          JavaEye推薦




          文章來源:http://iwinyeah.javaeye.com/blog/168521

          posted @ 2008-03-06 06:36 iwinyeah 閱讀(803) | 評論 (0)編輯 收藏

          [導入]OpenBaseMovil 的高速對象緩存機制


          網站: JavaEye  作者: iwinyeah  鏈接:http://iwinyeah.javaeye.com/blog/168482  發表時間: 2008年03月05日

          聲明:本文系JavaEye網站發布的原創博客文章,未經作者書面許可,嚴禁任何網站轉載本文,否則必將追究法律責任!

          一個簡單的高速對象緩存
          public class SimpleCache
          {
              private static long wideHits;
              private static long wideMisses;
          
              private Hashtable   cache;
              private Vector      stamps;
              private int         maxSize;
              private long        hits;
              private long        misses;
          
              // ...部分省略
          
              // 構建函數,根據SIZE構建Cache和命中表
              public SimpleCache( final int size )
              {
                  this.maxSize = size;
                  cache = new Hashtable( size );
                  stamps = new Vector( size );
              }
          
              // ...部分省略
          
              public void add( final Object key, final Object object )
              {
                  // 為什么不直接使用cache而要使用另一個引用?
                  final Hashtable cache = this.cache;
          
                  if( !cache.containsKey( key ) )
                  {
                      if( cache.size() == maxSize )
                      {
                          discard(); // 如果Cache超過容量,按策略丟棄過時的對象
                      }
                      // 在Cache中加入這個對象
                      cache.put( key, object );
                      // 相應也插入命中表第一位
                      stamps.insertElementAt( key, 0 );
                  }
                  else
                  {
                      // 更新Cache
                      cache.put( key, object );
                      // 也算命中一次
                      touch( key );
                  }
              }
          
              // ...部分省略
          
              public synchronized Object get( final Object key )
              {
                  final Object o = cache.get( key );
                  if( o != null )
                  {
                      hits++;
                      wideHits++;
                      // 算命中一次
                      touch( key );
                  }
                  else
                  {
                      misses++;
                      wideMisses++;
                  }
                  return o;
              }
          
              // ...部分省略
          
              // 總是丟棄最后一個對象,
              private void discard()
              {
                  final Object key = stamps.lastElement();
                  stamps.removeElement( key );
                  cache.remove( key );
              }
          
             // 每次從Cache取用某key對象,都將它插到第一位
              // 這樣不常用的對象將很快會被推至最后一位
              private void touch( final Object key )
              {
                  stamps.removeElement( key );
                  stamps.insertElementAt( key, 0 );
              }
          }
          

          本文的討論也很精彩,瀏覽討論>>


          JavaEye推薦




          文章來源:http://iwinyeah.javaeye.com/blog/168482

          posted @ 2008-03-05 22:29 iwinyeah 閱讀(65) | 評論 (0)編輯 收藏

          [導入]WTK模擬器之RMS文件(4 完結篇)


          網站: JavaEye  作者: iwinyeah  鏈接:http://iwinyeah.javaeye.com/blog/167866  發表時間: 2008年03月04日

          聲明:本文系JavaEye網站發布的原創博客文章,未經作者書面許可,嚴禁任何網站轉載本文,否則必將追究法律責任!

          感謝Cavaj!在Eclipse在包資源管理器上查到RecordStore.class在midpapi10.jar中
          將C:\WTK22\lib\midpapi10.jar解開,然后用Cavaj!反編譯RecordStore.class,得到了兩個類,果然有些料到,不僅有記錄鏈表,還有自由鏈表,自由空間重用與分裂...,用代碼說話(個人做了一些修改和注釋)!

          ------------------------
          寫在最后:原來研究它的目的是在利用J2me可選包FileConnection方式來實現手機理財JAccounthttp://iwinyeah.javaeye.com/admin/categories/27410,但經分析后,FileConnection沒有實現skip()方法,換言之,不能對文件進行自由讀寫,因而該計劃也落了空.

          在此也感謝無花http://wuhua.javaeye.com/的提醒,的確,手機實現的FileConnection的安全檢查太多了,嚴重影響用戶體驗,不太合適用于這種方式的應用.

          新計劃是手機理財JAccount上增加備份與恢復功能(read和append方式是FileConnection所支持的)由于備份和恢復無須經常地使用,用戶也可接受.
          本文的討論也很精彩,瀏覽討論>>


          JavaEye推薦




          文章來源:http://iwinyeah.javaeye.com/blog/167866

          posted @ 2008-03-04 21:41 iwinyeah 閱讀(347) | 評論 (0)編輯 收藏

          [導入]我記單詞的方法寫在這里


          網站: JavaEye  作者: iwinyeah  鏈接:http://iwinyeah.javaeye.com/blog/167074  發表時間: 2008年03月03日

          聲明:本文系JavaEye網站發布的原創博客文章,未經作者書面許可,嚴禁任何網站轉載本文,否則必將追究法律責任!

          有一個英語學習的圈子,我不想加入,看到有人要記單詞,我也把我的方法寫在下面:
          個人經驗:找一本7000單詞的字典,約100頁左右,每天反復記1頁,未記好的用鉛筆打上標記,第二天先復習以前打上標記的單詞,已會的,將標記刷掉,然后記新一頁,如此堅持,100天基本可記住7000單詞,然后加快速度,每天4頁,再記一次,則功成矣!

          看來,弄一個手機記單詞的軟件也許不錯呢,難度不大,如果真正有用,也許有一定市場呢,畢竟學生是消費力很強的群體.
          本文的討論也很精彩,瀏覽討論>>


          JavaEye推薦




          文章來源:http://iwinyeah.javaeye.com/blog/167074

          posted @ 2008-03-03 21:22 iwinyeah 閱讀(89) | 評論 (0)編輯 收藏

          [導入]OpenBaseMovil事件處理: 事件對象


          網站: JavaEye  作者: iwinyeah  鏈接:http://iwinyeah.javaeye.com/blog/167071  發表時間: 2008年03月03日

          聲明:本文系JavaEye網站發布的原創博客文章,未經作者書面許可,嚴禁任何網站轉載本文,否則必將追究法律責任!

          Event事件對象: 有如下屬性:
          protected Integer type; // 事件類型,預定義了全局事件,改變語言事件和進度事件
          protected boolean consumed; // 事件是否已被處理
          protected Hashtable attachments; // 以哈希表表示的與事件相關的對象附件

          通過在靜態事件對象預先登記多個各種類型的事件監聽器,當有事件發生時,就可通過殂態事件對象將事件發送給事件監聽器進行處理.事件監聽器收到事件后,可根據事件類型和附件作出響應,如果不想在它之后登記的監聽器再處理該事件,則將consumed設置為true.

          代碼如下:
          public static void dispatch( final Event event )
          {
          // 以下還未明白什么意義
          // 如果是進度事件并且當前的線程已在后臺任務中登記則不處理?
          if(
          !event.type.equals( PROGRESS ) ||
          !backgroundTasks.contains( Thread.currentThread() )
          )
          {
          final Vector v = (Vector) listeners.get( event.type );
          if( v != null )
          {
          final int count = v.size();
          for( int i = 0; i < count && !event.consumed; i++ )
          {
          final EventListener listener = (EventListener) v.elementAt( i );
          listener.handleEvent( event );
          Thread.yield();
          }
          event.consumed = false;
          }
          }
          }
          本文的討論也很精彩,瀏覽討論>>


          JavaEye推薦




          文章來源:http://iwinyeah.javaeye.com/blog/167071

          posted @ 2008-03-03 21:07 iwinyeah 閱讀(63) | 評論 (0)編輯 收藏

          僅列出標題
          共2頁: 上一頁 1 2 
          主站蜘蛛池模板: 额济纳旗| 沭阳县| 芜湖市| 大方县| 双流县| 兴业县| 贡山| 古浪县| 雅安市| 潜江市| 报价| 兰考县| 阿图什市| 抚顺县| 筠连县| 聂拉木县| 南投市| 丰镇市| 石家庄市| 昔阳县| 广宁县| 高密市| 凌海市| 青海省| 绥江县| 济宁市| 潜山县| 门源| 钟山县| 吐鲁番市| 渭源县| 浏阳市| 墨玉县| 遂平县| 永定县| 丹江口市| 丹凤县| 二手房| 固阳县| 新昌县| 万州区|