DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: yunf
今日帖子: 0
在线用户: 8
导航: 论坛 -> 移动应用开发 斑竹:flyers,iamdream  
作者:
男 diystar (diystar) ▲▲▲▲▲ -
普通会员
2017/3/19 11:42:26
标题:
极简的线程式 Timer,我用法有错么? 浏览:999
加入我的收藏
楼主: 原来的 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/
作者:
男 luckyso999 (luckyso) ★☆☆☆☆ -
盒子活跃会员
2017/3/19 15:22:59
1楼: 这个有什么意义 ??
----------------------------------------------
-
作者:
男 diystar (diystar) ▲▲▲▲▲ -
普通会员
2017/3/19 17:14:19
2楼: 楼上,安卓下面普通 Timer 工作不是很正常,且占用资源和 CPU 较多..
----------------------------------------------
http://mcool.appinn.me/
作者:
男 reniastyc (天道玄虚) ▲▲△△△ -
注册会员
2017/3/19 22:01:13
3楼: 不推荐使用sleep,这鬼东西且不说不精确,而且休眠线程不太和谐吧
----------------------------------------------
--O, ye Magnificient Deity's Miracle!
--I'm yet Reniastyc de El Magnifico.
作者:
男 wang_80919 (Flying Wang) ▲▲▲▲▲ -
普通会员
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
作者:
男 wang_80919 (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
作者:
男 wang_80919 (Flying Wang) ▲▲▲▲▲ -
普通会员
2017/3/20 9:26:50
6楼: https://segmentfault.com/q/1010000004882738
老新手说,他希望 服务 保活。
结果 人家发现 服务不停。

老新手看了,是不是会觉得是件好事呢?


http://ask.csdn.net/questions/242187
这也希望 老新手 看看。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 807046799 (南山有雪) ▲△△△△ -
注册会员
2019/9/17 8:35:09
7楼:   楼主,Timer1Enabled:=False,可以停下来,但是Timer1Enabled:=True却不能再继续了。
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v2.1 版权所有 页面执行35.00366毫秒 RSS