防止多个服务实例

时间:2015-10-09 09:48:03

标签: android android-service

我正在运行Android Service,每3秒运行一次。

很多时候,Service类中的工作无法在3秒内完成,但无论如何都会启动新实例。 我想避免多个实例。我怎么能这样做?

我的代码如下:

public void task() {
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            startConnection();
            handler.postDelayed(this, 3000);
        }
    }, 3000);
}

我可以想到几种解决方法:

  1. 有没有办法检查实例是否已经在运行?如果是,那么我可以跳过循环。

  2. 是否有任何内置功能可以阻止运行多个实例?

  3. 另一种选择是设置&重置旗帜&检查标志状态。

  4. 可能有更好的方法吗? 什么是最好的方法?

    由于

1 个答案:

答案 0 :(得分:0)

使用IntentService。从页面:

  

所有请求都在一个工作线程上处理 - 它们可能需要多长时间(并且不会阻止应用程序的主循环),但一次只能处理一个请求。

有点像这样的IntentService将在SERVICE_EXPIRE_TIME_MILLIS通过后“过期”,并跳转到下一个请求。 (认为​​它可能对您的特定示例有用)。

$sql="INSERT INTO contract_item(group_item,item,kuantiti,harga,amount)VALUES ".implode(',', $val);
        $stmt =connection::$pdo->prepare($sql);
        $stmt->execute();