J2ME处理手机的中断事件

来源:互联网 发布:linux 内核文件丢失 编辑:程序博客网 时间:2024/06/08 00:53

手机的中断事件一般就是来电话、短信或是按手机上的红键,理论上来说这些事件一但产生手机便会调用中断处理。但实际上每个不同产商的手机都会有些许不同的地方。

1)一般来说手机中断时会调midlet的pauseApp()的,然后回来会调startApp(),这样就可以在这两个函数中进行中断的处理。

2)但有些手机其实不会去调用pauseApp(),而是在中断时调用Canvas的hideNotify(),在中断返回时(当然包括启动时)会调用Canvas的showNotify(),中断处理便可以放在这两个函数中。

3)当然还有一些手机更牛,上面的两种情况都不调用,这时就可使用公司称为“软中断”的东西了。所谓的软中断,其实就是在程序中判断程序一次循环的间隔时间,如超过某设定值(一般都是3秒)就调用中断处理函数。例如:

       if (System.currentTimeMillis() - s_previousTime >cDef.k_virtual_interrupt_time)
           {
               hideNotify();
               showNotify();
           }
       s_previousTime = System.currentTimeMillis(); 


4)冒似还有一些更神奇的手机,中断调用的顺序是乱来的。有可能先调showNotify反回调hideNotify,而且有可能还不只一次。遇到这些手机,大家可以在真机上测试,把每个中断处理函数的调用次数顺序打印出来分析。

 

例子:

在 来电话、短信 或者“最小化”之后选择“继续”,返回当前页面

public class IMusicMIDlet extends MIDlet {
 
 private boolean isPaused = false;
 public IMusicMIDlet() {
  super();
 }

 protected void startApp() throwsMIDletStateChangeException {
  // 如果是暂停
  if (isPaused) {
   isPaused =false;

   return;
  }
  
  //执行主程序

 }

 protected void pauseApp() {
  isPaused = true;
 }

 protected void destroyApp(boolean arg0) throwsMIDletStateChangeException {
   
 }

 

0 0
原创粉丝点击