记录学Delphi安卓编程过程中的一个坑

欢迎加入全网最大Delphi 技术交流群 682628230

以下这段代码在win10和在安卓下的执行顺序有区别:abcde为序号:

在win中,顺序是abcdef,fs在修改后能保存,在安卓下,顺序是aefbcd,所以fs没能在修改后保存。

a: TDialogService.MessageDialog('用户:'+user+' 已经存在,但你输入的密码与保存的密码不相同,是否更新密码?',

     TMsgDlgType.mtConfirmation,[TMsgDlgBtn.mbYes,TMsgDlgBtn.mbNo],TMsgDlgBtn.mbYes,0,

      procedure (const AResult: TModalResult)

      begin

b: if AResult=mrYes then

       begin

c: fs.Values[user]:='123';

d: TDialogService.ShowMessage('aresult=mryes,已经执行更新密码操作');

       end;

      end);

     end;

e: fs.SaveToFile(filepath);

f: TDialogService.ShowMessage('saves');

——-应该是因为MessageDialog在win下是模态,会中断程序执行,而安卓下则不是,所以在对话框显示期间,后面的代码还在继续执行。

以下是盒子一大佬的回复

——- 同步/异步

阻塞/非阻———

Windows 底下编程,你也可以选择异步模式。

安卓底下,和界面有关的主线程,不允许阻塞,否则会被系统杀死。所以对话框也只能是异步非阻塞的。

 

异步非阻塞的代码,如果需要获得返回值,就得插入回调函数,把代码整得复杂了。但这个是安卓系统的特性,没办法。 

原文链接:https://blog.csdn.net/tuao2/article/details/134720920

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享