Dalvik与JVM区别

在J2ME中,刷新都是在canvas中通过调用线程结合repaint()来刷新, 他们使线程不断去循环,去调用canvas, 笔者在Android编程语言入门时也曾经想用J2ME的模式用在android 中,结果报异常了, 为什么呢?

很多人认为Dalvik虚拟机是一个Java虚拟机,因为Android编程语言恰恰就是Java语言。但是这种说法并不准确。因为Dalvik虚拟机并不是按照Java虚拟机的规范来实现的,两者并不兼容;同时还要两个明显的不同: Java虚拟机运行的是Java字节码。

而Dalvik虚拟机运行的则是其专有的文件格式DEX(Dalvik Executable)。所以在以前JAVA 里面能使用的模式。可能在android 里面用不起来 。在自带的例子里面他是通过消息的机制来刷新的。而在Android编程语言的消定义比较广泛。

比如,手机的暂停, 启动, 来电话、短信,键盘按下,弹起都是一个消息。总的来说, 事件就是消息;只要继承Handler类就可以对消息进行控制,或者处理, 根据具体情况进行具体处理:

 
   
  1. class RefreshHandler extends Handler {  
  2.  
  3. //响应消息。  
  4.  
  5. public void handleMessage(Message msg) {  
  6.  
  7. SnakeView.this.update();// 重要页面  
  8.  
  9. SnakeView.this.invalidate();刷新页面  
  10.  
  11. }  
  12.  
  13. // 向外提供人工的调用消息的接口,  
  14.  
  15. public void sleep(long delayMillis) {  
  16.  
  17. this.removeMessages(0);//注消消息  
  18.  
  19. // 添加消息,  
  20.  
  21. sendMessageDelayed(obtainMessage(0), delayMillis);  
  22.  

你可能感兴趣的:(dalvik)