Reputation: 15
I need the service to be started every 1 minutes that run in background even if my application is not running
Here is part of the code: `
I use the timer to handle call every 1 minute
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);
}
` Thank you
Upvotes: 1
Views: 6871
Reputation: 389
Android TimerTask Example
TimerTask Represents the task will run specified time and it will run only once or Repeat.
Create new Class new TimerTask.
TimerTask Having two methods.
-->
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();
}
}
}
Upvotes: 6
Reputation: 67
use in code
Timer timer ;
int count = 0 ;
if (count > 10) {
// Enter your code
//It will run N number of time
timer.cancel () ;
}
Upvotes: 0
Reputation: 1039
For Timer do like this
Timer timer = new Timer() ;
MyTimer myTask = new MyTimer (timer) ;
int firstSart = 1000 ; // it means after 1 second.
int period = 1000*60 ; //after which the task will repeat;(After 60 seconds)
timer.schedule(myTask, firstSart, period) ;//the time specified in millisecond
Create separate class for timer & put service there or you can pass through constructor in case of generic code-
import java.util.Timer;
import java.util.TimerTask;
/* This is scheduler class which have scheduleing operation logic*/
public class MyTimer extends TimerTask {
Timer timer ;
int count = 0 ;
public MyTimer () {
}
public MyTimer ( Timer timer ) {
this.timer = timer ;
}
public void toDo() {
Intent intent = new Intent(ServiceMain.this, LocationMonitoringService.class);
startService(intent);
}
@Override
public void run () {
toDo () ;
if (count > 10) {
// this is the condition when you want to stop the task here i have not incriges the value of count
//so it will run in infinite loop.
timer.cancel () ;
}
}
}
Upvotes: 0
Reputation: 663
You need to use Alarm Manager of android which will start your service in what time you have set in Alarm Manager
Look at this developer guide
http://developer.android.com/training/scheduling/alarms.html
Upvotes: 0