2013-03-25 6 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 AlarmManagersetRepeating() (혹은 setInexactRepeating()를 사용하여 하루에 한 번 발생하는 알람을 예약합니다. 클럭 틱을보고 모든 시간을 실행하는 서비스를 시도하는 사용자의 RAM을 낭비하지 마십시오.

+0

사용 방법 만약 당신이 내게 돈이 없다면 plz 코드 번호 –

+0

@joyhelina를 보내 주시겠습니까? "setInexactRepecting()을 사용하는 방법은 무엇입니까?"- 자바 메서드인데, 'Activity '처럼 어떤'Context'에서'getSystemService()'에 대한 호출을 통해 얻는 'AlarmManager'입니다. – CommonsWare

관련 문제