我正在运行Android Service
,每3秒运行一次。
很多时候,Service
类中的工作无法在3秒内完成,但无论如何都会启动新实例。
我想避免多个实例。我怎么能这样做?
我的代码如下:
public void task() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
startConnection();
handler.postDelayed(this, 3000);
}
}, 3000);
}
我可以想到几种解决方法:
有没有办法检查实例是否已经在运行?如果是,那么我可以跳过循环。
是否有任何内置功能可以阻止运行多个实例?
另一种选择是设置&重置旗帜&检查标志状态。
可能有更好的方法吗? 什么是最好的方法?
由于
答案 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();