注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

沉默蜂B4A安卓编程

国内资料最全的B4A资料库

 
 
 

日志

 
 

#RaisesSynchronousEvents 注释  

2016-06-10 11:00:28|  分类: 调试发布 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
某天我的B4A程序启动时顺利通过 main 活动视图的 create  和 Resume 事,突然logs选项卡显示一条错误:
英文 Unexpected event (missing RaiseSynchronousEvents): my_gbt_toolbar_click
中文 my_gbt_toolbar_click 这个函数有问题,缺少RaiseSynchronousEvents 

这个帖子是说,这个是rapid debug(调试)模式下才会出现的问题
要解决这个问题需要在你这个文件头部位置加上一句 #RaisesSynchronousEvents: 你调用的函数名

感谢网友“马里奥”翻译了网官的帖子 RaisesSynchronousEvents

“#RaisesSynchronousEvents” B4A v3.0新增的一个注解,只与快速调试模式有关。

这个注解会通知调试编译器:被注解的方法可以通过call方法启动一个或多个事件(在方法返回之前) 。

在大多数情况下,不用特殊指定。在官方的类库中,只有XmlSax类需要。

在调用SaxParser.ParseSaxParser.Parse2时会引发XML事件。在调用这些事件后方法才会结束。

同样需要特殊注解,当现实模态对话框时(像MsgboxMsgbox2等)

 

快递调试模式包含两部分组件:调试器和设备壳程序。代码被调试器(运行在电脑)执行。

调试器给壳程序发送指令。结果和代码直接运行在设备上一样。

为了避免网络延时,调试器不会等待每一个方法的执行结果。他会发送一大波指令,只有遇到必须返回结果的指令时才会继续等待。

如果一个事件直接被另一个方法调用,调试器必须等待返回结果,否则的话缓冲区状态就会打破:报错!

例如,看以下代码:

Code:

'Class module

Sub Class_Globals 

End Sub

 

'Initializes the object. You can add parameters to this method if needed.

Sub Initialize 

End Sub

Sub SubThatCanRaiseEvent (target As Object, i As Int)

   If i = 3Then

     CallSub(target, "test")

   EndIf

End Sub 

 

如果将此方法Sub SubThatCanRaiseEvent注解为@RaisesSynchronousEvents ,调试器就知道这个方法可以启动一个事件,并准备好获取结果。

如果你编译进库并启动这个方法,你会得到一个错误提示信息:

Unexpected event (missing RaiseSynchronousEvents): test

程序崩溃了。

调试器不知道SubThatCanRaiseEvent这个方法可以启动一个事件,所以当启动这个事件是,缓冲区被打破了

解决方法是在Java库中为这些方法添加@RaisesSynchronousEvents注解

如果是B4A编译的库的话,你需要新增一个@RaisesSynchronousEvents属性

Code:

'Class module

#RaisesSynchronousEvents: SubThatCanRaiseEvent

Sub Class_Globals

 

End Sub

 

'Initializes the object. You can add parameters to this method if needed.

Sub Initialize

End Sub

Sub SubThatCanRaiseEvent (target As Object, i As Int)

   If i = 3 Then

     CallSub(target, "test")

   End If

End Sub

 

注意这个属性可多次添加,为每一个需要的方法。

  评论这张
 
阅读(101)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017