导航:
论坛 -> 移动应用开发
斑竹:flyers,iamdream
作者:
2017/3/19 11:42:26
标题:
极简的线程式 Timer,我用法有错么?
浏览:2218
加入我的收藏
楼主:
原来的 Timer: ... TForm1 = class(TForm) Timer1: TTimer; ... procedure TForm1.Timer1Timer(Sender: TObject); begin ... end; 现在改成: ... TForm1 = class(TForm) ... public { Public declarations } Timer1Enabled:Boolean; procedure Timer1; ... procedure TForm1.Timer1; begin TThread.CreateAnonymousThread(procedure () begin while Timer1Enabled do begin //非 UI 部分 ... TThread.Synchronize(TThread.CurrentThread, procedure() begin //UI 部分 ... end); Sleep(1000); end; end).Start; end; 是不是比 Flying Wang 的 FlyFilesUtils 中提供的 TAndroidTimer 简单的多呢? 另外,我这种用法有错么?
----------------------------------------------
http://mcool.appinn.me/
作者:
2017/3/19 15:22:59
1楼:
这个有什么意义 ??
----------------------------------------------
-
作者:
2017/3/19 17:14:19
2楼:
楼上,安卓下面普通 Timer 工作不是很正常,且占用资源和 CPU 较多..
----------------------------------------------
http://mcool.appinn.me/
作者:
2017/3/19 22:01:13
3楼:
不推荐使用sleep,这鬼东西且不说不精确,而且休眠线程不太和谐吧
----------------------------------------------
--O, ye Magnificient Deity's Miracle! --I'm yet Reniastyc de El Magnifico.
作者:
2017/3/20 8:55:49
4楼:
AndroidTimer 本来目的是 安卓服务中用。 不过,事实上,安卓服务不推荐用 timer 和线程。 安卓服务,要求,请尽快完成 然后退出。 然后系统会在你规定的或者合适的时间,再次启动。 如果你没规定下次启动的时间,那么系统会自己决定。 但是,如果你赖着不退出,那么系统就会 毫不留情的 杀掉你的进程。 安卓下面普通 Timer 和 任何线程 在休眠的时候,都会休眠。 要知道,休眠 指的是 CPU 不工作。 CPU 的罢工了,你任何代码都无效。 但是,如果你被系统ROM认为非常重要,那么你可以使用 Jni 接口的 闹钟管理器打开 RTC 或 RTCWakeUP ,定时完成指定代码。 但是 WakeUP 不一定有效,因为这个还是看 ROM 的脸色。 而且使用 JNI 闹钟 和服务一样的要求,尽快退出。 而且 时间更短,据说只有 十几秒。 而且,时间精度也不一定是按你的要求,ROM 可能会将多个 JNI 定时器 统一执行,这样 肯定有的早执行,有的晚执行。
----------------------------------------------
(C)(P)Flying Wang
作者:
2017/3/20 9:19:16
5楼:
不过,告诉你一个好消息。 作为 音乐类的服务,是有特权的。 http://www.cnblogs.com/wsine/p/5177372.html 写服务不一定需要你写 java 。 DELPHI 的基本安卓服务,也支持 文档中的调用方法。 但是,不一定支持 Delphi 的 MediaPlayer 控件。 所以,建议用 文档中的 Jni 对象。
----------------------------------------------
(C)(P)Flying Wang
作者:
2017/3/20 9:26:50
6楼:
https://segmentfault.com/q/1010000004882738 老新手说,他希望 服务 保活。 结果 人家发现 服务不停。 老新手看了,是不是会觉得是件好事呢? http://ask.csdn.net/questions/242187 这也希望 老新手 看看。
----------------------------------------------
(C)(P)Flying Wang
作者:
2019/9/17 8:35:09
7楼:
楼主,Timer1Enabled:=False,可以停下来,但是Timer1Enabled:=True却不能再继续了。
----------------------------------------------
-