2013-03-25 133 views
0

我正在嘗試創建具有後臺任務的服務。 24小時後,線程將開始並執行該過程。具有後臺任務的Android服務

我試過這樣。但它沒有奏效。

public class MyService extends Service { 

int counter = 0; 
static final int UPDATE_INTERVAL = 10 * 1000; ///1000 = 1 second 
private Timer timer = new Timer(); 
Home home; 

private boolean isRunning = true; 

@Override 
public IBinder onBind(Intent intent) { 
    // Not implemented...this sample is only for starting and stopping 
    // services. 
    // Service binding will be covered in another tutorial 
    return null; 
} 

@Override 
public void onCreate() { 
    super.onCreate(); 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    super.onStartCommand(intent, flags, startId); 

    // Announcement about starting 
    Toast.makeText(this, "Starting the Demo Service", Toast.LENGTH_SHORT) 
      .show(); 

    // Start a Background thread 
    isRunning = true; 
    // Thread backgroundThread = new Thread(new BackgroundThread()); 
    BackgroundThread(); 

    // We want this service to continue running until it is explicitly 
    // stopped, so return sticky. 
    return START_STICKY; 
} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 

    // Stop the Background thread 
    isRunning = false; 

    // Announcement about stopping 
    Toast.makeText(this, "Stopping the Demo Service", Toast.LENGTH_SHORT) 
      .show(); 
} 

private void BackgroundThread() { 

    timer.scheduleAtFixedRate(new TimerTask() { 

     @Override 
     public void run() { 
      // TODO Auto-generated method stub 
      Calendar c = Calendar.getInstance(); 
      String month = String.valueOf(c.get(Calendar.MONTH) + 1); 
      String year = String.valueOf(c.get(Calendar.YEAR)); 
      String day = String.valueOf(c.get(Calendar.DAY_OF_MONTH)); 
      String months = null; 
      if (month.startsWith("0") || month.startsWith("1")) { 
       months = year + "-" + month + "-" + day; 
       home.loadCalender(months); 
      } else { 
       months = year + "-" + "0" + month + "-" + day; 
       home.loadCalender(months); 
      } 

     } 
    }, 0, UPDATE_INTERVAL); 
    /* 
    * counter = 0; while(isRunning) { System.out.println(""+counter++); 
    * //Thread.currentThread().sleep(5000); 
    * 
    * } 
    */ 

    System.out.println("Background Thread is finished........."); 
} 

}

在我的主要活動,我已經開始服務... PLZ幫我做這個任務。

回答

4

Use AlarmManager安排您的報警發生,每天一次,使用setRepeating()(或者setInexactRepeating(),請不要浪費用戶的RAM想有運行的所有的時間看時鐘滴答的服務。

+0

如何使用setInexactRepecting()?...如果你不是我的,你可以給我發一段代碼 – 2013-03-25 12:24:29

+0

@joyhelina:「如何使用setInexactRepecting()?」 - 它是一個Java方法,你可以調用一個' AlarmManager',你可以通過調用''getSystemService()''''''''''''''''''''''''''。 – CommonsWare 2013-03-25 12:40:48