实例论证J2ME的事件传输机制

【信息科学与工程学】计算机科学与自动化——第十八篇 存储系统设计 10 存储器/存储软件/存储芯片/存储盘/存储系统/存储网络01 ③ MTJ电阻 → 界面:TMR=(R_AP-R_P)/R_P = 2P₁P₂/(1-P₁P₂) (Julliere模型);③ 访问延迟模型 → 统计:平均访问延迟 = p_hot * t_dram + (1-p_hot) * t_nvm + t_migration_overhead;:① 储能电容计算 → 数学物理:所需能量 E = P * t_backup,电容 C = 2E / (V_start² - V_end²);:① B-tree平衡 → 代数:树高 h = log_m(N),m为扇出; 阅读详情
本文主要阐述的问题是,在J2ME开发中事件的传输到底是什么机制。主要围绕Canvas类事件传输的串行化进行分析和研究,通过实例进行论证并在最后得出结论。

    通过参考Java doc我们可以知道在J2ME中的事件传输是串行化的,那么什么是串行化呢?java doc里面说当一个时间方法调用完成之后,下面的事件方法才会被调用。这样可以保证用户的上次输入已经被完成了,下次的事件输入才会得到响应。首先我们来看看那些方法是所谓的事件方法。在MIDP中列出了如下的方法:
showNotify()
hideNotify()
keyPressed()
keyRepeated()
keyReleased()
pointerPressed()
pointerDragged()
pointerReleased()
paint()
the CommandListener's commandAction() method
我们针对上述串行化的理解不防做一下这样的假设,当showNotify()方法被调用的时候,如果在内部定义了repaint()方法,则会请求系统对屏幕进行重新的绘制,这会调用到paint()方法。接下来我们实现keyPressed()方法,让它把按键的名字打印在屏幕上。为了模拟串行化的效果,我们在每个方法中都让当前的线程睡眠2000ms,如果事件的确是串行化的机制,那么程序一定会断断续续的画出我们的按键名。为了论证我们的设想,我编写了下面的一段代码。

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class KeyCodes extends MIDlet
{
    private Display display;
    private KeyCodeCanvas canvas;

    public KeyCodes()
    {
        display = Display.getDisplay(this);
        canvas = new KeyCodeCanvas(this);
    }

    protected void startApp()
    {
        display.setCurrent(canvas);
    }

    protected void pauseApp()
    {
    }

    protected void destroyApp(boolean unconditional)
    {
    }

    public void exitMIDlet()
    {
        destroyApp(true);
        notifyDestroyed();
    }
}

class KeyCodeCanvas extends Canvas implements CommandListener
{
    private Command cmExit;
    private String keyText = "hello let's go!";
    private KeyCodes midlet;

    public KeyCodeCanvas(KeyCodes midlet)
    {
        this.midlet = midlet;
        cmExit = new Command("Exit", Command.EXIT, 1);
        addCommand(cmExit);
        setCommandListener(this);
    }

    protected void paint(Graphics g)
    {
        System.out.println("I am invoked!");
        g.setColor(0, 255, 0);
        g.fillRect(0, 0, getWidth(), getHeight());

        if (keyText != null)
        {

            g.setColor(0, 0, 0);

            g.drawString(keyText, getWidth() / 2, getHeight() / 2, Graphics.TOP
                    | Graphics.HCENTER);
        }
    }
   
    public void showNotify()
    {
        repaint();
        try
        {
            Thread.sleep(2000);
        }
        catch(InterruptedException e)
        {
           
        }
    }

    public void commandAction(Command c, Displayable d)
    {
        if (c == cmExit)
            midlet.exitMIDlet();
    }

    protected void keyPressed(int keyCode)
    {
        keyText = getKeyName(keyCode);
        repaint();
        try
        {
            Thread.sleep(2000);
        }
        catch(InterruptedException e)
        {
           
        }
          
           
    }
}

    编译,运行。我们看到当Canvas被显示在屏幕上的时候,showNotify()方法首先被调用,它的repaint()方法被调用后,并不是屏幕马上会被绘制。而是要等两秒的时间,showNotify()方法返回后,paint()方法才开始执行。在这两秒的时间,即使你按键屏幕同样不会重新绘制,相反你的按键事件会被缓存到一个队列,一个一个的被慢慢的绘制出来。下面是程序的截图,供参考

 

 

 





 

 

 

    在Canvas类的java doc中有一个备注说明了一些值得关注的问题,比如serviceRepaints()方法会强迫任何挂起的绘画请求立刻被执行,showNotify()和hideNotify()方法使用的一些注意等,读者可以参考java doc了解进一步的内容。

【信息科学与工程学】计算机科学与自动化——第三篇 计算理论基础05 计算数论02 企业内部的职权滥用和利益输送往往隐藏在合法交易的表象之下,形成系统性风险。 阅读详情

相关推荐

【信息科学与工程学】计算机科学与自动化——第六十六篇 算子篇 第一章 通用算子01 多模态数据(图形/图像/文本/语音)中推断人类内在状态、策略、动机和利益的算法算子知识库

编号领域算法/方法算子名称算子的数学方程式/表达复杂度 (示例)关联知识11量子场论正则量子化产生/湮灭算符对易关系: [â_p, â†_q] = δ⁽³⁾(p​ - q)应用于态空间,计算复杂度取决于截断福克空间,粒子数表象,二次量子化12统计力学蒙特卡洛模拟马尔可夫链转移算子T(s → s‘) :满足细致平衡条件 π(s)T(s→s’)=π(s‘)T(s’→s)收敛到平衡分布需 ~O(τ), τ为相关时间细致平衡,Metropolis-Hastings准则,重要性采样13电磁学边界元法单层势/双层势算子

weixin_49199313的博客 310

通过实例论证J2ME的事件传输机制

<!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--><script type="text/javascript"

zgqtxwd的专栏 430

【信息科学与工程学】【审计学】第一篇 招投标领域审计算法01

在每个关键流程节点(如文件上传、开标唱标、评标结束), 计算该环节所有电子文件的数字指纹(如SHA-256哈希值), 并将指纹和元数据(时间、操作人)上链存证。:从发票、合同中提取材料品名、规格、采购价、时间、地点。:对每个供应商, 提取其在历史投标中的行为序列特征, 如:中标率、与特定伙伴同时投标率、自身高报价次数、在伙伴中标项目中的“弃标”或“无效标”次数。:监控开标、评标现场音视频, 识别异常情绪(激烈争吵)、敏感关键词(“打点”、“关照”)、异常物品传递、私下交流等违规行为。

weixin_49199313的博客 816

J2ME开发中由WAP网关带来的cookie问题

J2ME开发中由WAP网关带来的cookie问题 在之前的产品开发中,遇到一个奇怪的问题,软件在在CMNET下能正常工作,当用了CMWAP时问题出来,后来问题找到了。在CMWAP下,客户端如果带上Cookie,有时会遇到无法正常登录等情况,下面简单介绍其原因及解决办法。 1、 Cookie是如何工作? 一般来说,Cookie通过HTTP Headers实现服务器端与客户端的交互...

游子归来 145

黑群晖DSM7.0.1物理机安装教程

使用芯片无忧工具,查看U盘的和。使用,格式化U盘。使用镜像写入工具,把引导写入U盘。修改文件,可以使用工具把文件复制到桌面,通过修改好之后,拖进这个界面中。或者在电脑中,查看U盘,打开U盘中的文件直接修改。具体修改内容如下:PID修改为U盘的PIDVID修改为U盘的VID默认只有mac1=a8412083CB52 mac2=0a11323D47F7 ,增加:mac3=a15823C08000 mac4=a23C04158B52 mac5=82a002524158 mac6=38233052415aS

JingLisen的博客 2万+

实战解析:从Innovus到Calibre的LVS错误排查全流程

本文详细解析了从Innovus到Calibre的LVS错误排查全流程,涵盖物理验证关键步骤与工具链协同。通过实战案例分享,重点解决器件不匹配、连接性错误等常见问题,并提供GDS导出规范、网表修正策略等实用技巧,帮助工程师高效完成芯片设计物理验证。

9o8p7i6u5y的博客 1038

LangChain4j 中文文档

欢迎!LangChain4j 的目标是简化将大语言模型集成到 Java 应用中的过程。它的实现方式如下:统一 API: 大语言模型提供商(如 OpenAI 或 Google Vertex AI)和嵌入(向量)存储(如 Pinecone 或 Milvus)都使用专有 API。LangChain4j 提供统一 API,避免你为每个提供商或存储分别学习和实现特定 API。想尝试不同的大语言模型或嵌入存储时,你可以轻松切换,而无需重写代码。LangChain4j 目前支持 20+ 个主流大语言模型提供商 和 30+

qq_43356685的博客 989

鸿蒙手机卸载内置应用 adb连接

**傻瓜式删除鸿蒙系统内置应用,自己亲测有效。**

JJDXBT的博客 3万+

51c大模型~合集110

为了解决这一问题,在稠密化过程中,我们对容易引起退化和梯度集中的具有极端延展率的高斯面片进行了筛选,并对其增殖过程进行了限制,从而在不牺牲性能的情况下有效稳定了训练过程,保障了优化过程的顺利进行。大规模场景的重建往往还意味着显著的训练开销,要重建 1.97 平方千米的区域会产生接近两千万的高斯点,这意味着 4.6G 的存储以及 31.5G 的显存开销,以及超过三小时的训练时长。站在 AI 研究者的角度,得到了《苦涩的教训》,意味着在总结教训的过程中明确了什么是「更好」的。第二类则瞄准了相对复杂的问题。

whaosoft~aiotの开发板商城 2604

simulink中MIL测试简单理解

输入信号设置如下:选中New Test Case1 ---INPUT。5、新建(选择New,Test from Spreadsheet)6、可以新建也可以导入(Use existing test)Source:Output为自己预测结果。3、右键子系统(Create)打开生成表格,可以自己调试。4、创建测试用例表格。保存路径为模型路径。保存路径在模型路径。8、运行测试设h置。

lingdianhuat的博客 1785

【WRF编译-Lab1】使用自动脚本编译WRF:错误总结

WRF编译过程及错误总结

WW、forever的博客 83

“基于Web Service的掌上应用系统的设计”常见问题汇总

“基于Web Service的掌上应用系统的设计”常见问题汇总

yiwangningbi的专栏 1338

逆向分析顶象5代各类验证码类型的图片还原方法(附源码)

6.刷新滑块验证码图片,会进入之前的for循环断点,分析此处的代码会发现,该循环循环了处理了n字符串的值,取出n字符中的值并使用charCodeAt生成Unicode 编码,然后又调用了a函数,如果a函数返回true就会把之前生成的Unicode编码+1,a函数参数分别是c数组和Unicode取余32后的值,然后再把Unicode取余32后的值push进c数组,这里的n值为滑块碎片背景图的name。2.搜索"ranges":,会找到ranges赋值的地方,在此处代码断点,并点击跳过断点,结束此次调试。

老衲爱洗头的博客 1198

基于STM32森林火灾远程监测模块设计 |毕设答辩|单片机项目|毕业设计

摘 要为解决传统森林火灾监测中距离远、干扰大、部署难、识别精度低的痛点,本文设计并实现了一套基于STM32F411CEU6的森林火灾远程监测模块。该系统以STM32F411CEU6为主控核心,硬件上集成MQ2烟雾传感器、火焰传感器、LORA通信模块、ESP8266 WIFI模块及TFT LCD显示模块,采用模块化设计适配森林野外恶劣环境;

weixin_45776178的博客 65

【思考模型框架】前景理论(Prospect Theory),认为人们并不是完全理性的决策者,而是根据一些心理上的偏差来评估选项的价值

前景理论,是一种行为经济学理论。前景理论,描述了人们在不确定条件下如何作出决策。前景理论,认为人们并不是完全理性的决策者,而是根据一些心理上的偏差来评估选项的价值。

奶爸的编程之路,也就一周冷个三天 1644

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Python深度学习:从入门到实战

亲爱的读者,欢迎您翻开这本书。我们即将探索的,是深度学习的宇宙——一个由数据、算法与算力构筑的奇妙世界。它既是严谨的科学,也是创造的艺术,更是一条通往未来智慧的修行之路。本书将带您从最基础的数学原理出发,亲手搭建神经网络,驾驭Transformer等前沿模型,最终将智慧转化为现实世界的价值。请放下畏惧,保持好奇。这不仅是一次知识的学习,更是一场思维的远行。来,随我一起,开启这趟非凡的旅程吧。

weixin_45747731的博客 299

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: MIDP2.0中Alert的新特性
下一篇: 应用RMS实现用户自动登陆功能
mingjava
博客等级 码龄24年 68粉丝 114原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值