【问题标题】:Android: How to run thread in Service after timely intervals?Android:如何在定时间隔后在Service中运行线程?
【发布时间】:2010-11-13 06:54:24
【问题描述】:

嗨 我需要创建一个服务,在(假设)10 分钟后在新线程中运行一段代码。我怎样才能做到这一点?我已经准备好服务,但我似乎不明白如何(如果)从线程内调用计时器。有人可以帮忙吗?

【问题讨论】:

    标签: android


    【解决方案1】:

    在 StackOverFlow 上进行了一些(更多)搜索后,我发现了一些对我有帮助的东西

     final Handler handler = new Handler();
        final Runnable r = new Runnable()
        {
            public void run() 
                    {
                        // code here what ever is required
                        handler.postDelayed(this, 10*600);
                    }
                };
    
       handler.postDelayed(r, 10*600);
    

    【讨论】:

    • Handler 将在 UI 线程中运行这个可运行的实例。后台线程怎么做??
    【解决方案2】:

    最简单的方法是创建新的Handler。你得到一个新线程,你可以在 10 分钟后执行 Runnable handleMyAction 中定义的代码:

    mMessageHandler.postDelayed(handleMyAction, 1000*600);
    

    【讨论】:

    • 这个怎么样:Thread thread = new Thread() { @Override public void run() { try { while(true) { sleep(1000); Toast.makeText(getBaseContext(), "正在运行的线程...", Toast.LENGTH_LONG).show(); } } catch (InterruptedException e) { Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_LONG).show(); } } };线程.start();
    • 我给你的建议正是你一段时间后独自发现的。
    【解决方案3】:

    您不应该依赖计时器。您的服务可能会在这 10 分钟内被终止,并且计时器将被销毁。可靠的方法是使用AlarmManager Frequently updating widgets (more frequently than what updatePeriodMillis allows)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多