我需要每1分钟启动一次在后台运行的服务,即使我的应用程序未运行
这是代码的一部分:
`
我使用计时器每1分钟处理一次通话
final Handler handler = new Handler();
Timer timer = new Timer();
TimerTask hourlyTask = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
@SuppressWarnings("unchecked")
public void run() {
try {
Intent intent = new Intent(ServiceMain.this, LocationMonitoringService.class);
startService(intent);
// Toast.makeText(testServiceMain.this, "test", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
// TODO Auto-generated catch block
}
}
});
}
};
timer.schedule(hourlyTask, 3, 1000 * 10);
}
`
谢谢
最佳答案
Android TimerTask示例
TimerTask表示任务将在指定时间运行,并且将仅运行一次或重复。
创建新的类New TimerTask。
TimerTask具有两种方法。
-->
1 .scheduledExecutionTime() // Repeat Task
2 .schedule() //Only once
Timer singleTask = new Timer();
Timer repeatTask = new Timer();
int singleTaskInterval = 3000; // 3 sec
int repeatInterval = 10000; // 10 sec
// this task for specified time only once it will run
singleTask.schedule(new TimerTask() {
@Override
public void run() {
// Here do something
// This task will run 3 sec only once.
}
}, 1000);
// this task for specified time it will run Repeat
repeatTask.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
// Here do something
// This task will run every 10 sec repeat
}
}, 0, repeatInterval);
When your activity went to destroy or stop . you should cancel this task
--> -->
@Override
protected void onDestroy(){
super.onDestroy();
if(singleTask != null){
singleTask.cancel();
}
if(repeatTask != null){
repeatTask.cancel();
}
}
Activity Code
/**
*
* @author vijayakumar
*
*/
public class AndroidMADQAActivity extends Activity {
/** Called when the activity is first created. */
Timer singleTask = new Timer();
Timer repeatTask = new Timer();
int singleTaskInterval = 3000; // 3 sec
int repeatInterval = 10000; // 10 sec
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
singleTask.schedule(new TimerTask() {
@Override
public void run() {
// Here do something
// This task will run 3 sec only once.
}
}, 1000);
repeatTask.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
// Here do something
// This task will run every 10 sec repeat
}
}, 0, repeatInterval);
}
@Override
protected void onDestroy(){
super.onDestroy();
if(singleTask != null){
singleTask.cancel();
}
if(repeatTask != null){
repeatTask.cancel();
}
}
}
关于android - 如何每1分钟在后台运行一次服务,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34330221/