2014-08-28 6 views
0

나는이 버튼을 클릭 (보내기) 할 때 특정 시간에 메시지를 보낼 수있는 Android 용 코드를 작성 중입니다. 이렇게하려면 TimerTask를 구현하는 클래스를 만들어 코드가 지정되면 실행되도록합니다. 이것은 5 분에서 1 시간과 같이 짧은 간격으로 작동하지만 한 시간 후에 실행되도록 코드를 설정하면 실행되지 않습니다. 나는 잘못된 코딩이나 공통적 인 문제인지 확실하지 않지만 이것에 대한 해결책이 있는지 알고 싶습니다.Java의 TimerTask는 짧은 시간 동안 만 작동합니까?

관련 코드 : 안드로이드에

send = (Button) findViewById(R.id.send); 
    send.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      if(isEmpty(message)){ 
       Toast.makeText(getBaseContext(), "please enter a message", Toast.LENGTH_LONG).show(); 
      } 
      else{ 
       sendMessageAt(); 
      } 
     } 
    }); 

public void sendMessageAt(){ 

    DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    Date date; 
    try { 
      date = dateFormatter.parse(getDateTime()); 
      Timer timer = new Timer(); 
      TimerTask executeCode = new Execute(); 
      timer.schedule(executeCode,date); 
      Toast.makeText(getBaseContext(), "Your message will be sent at: "+getDateTime(), Toast.LENGTH_LONG).show(); 

    } catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 

    } 
} 

public class Execute extends TimerTask{ 

    @Override 
    public void run() { 
     // TODO Auto-generated method stub 
     String phoneNm="2017257831"; 
     message = (EditText) findViewById(R.id.message); 
     String mesToStr = message.getText().toString(); 


     sendSMS(phoneNm,mesToStr); 
    } 

} 

private void sendSMS(String phoneNm,String message){ 


    PendingIntent pi = PendingIntent.getActivity(this, 0, 
      new Intent(this, MainActivity.class),0); 
    SmsManager sms = SmsManager.getDefault(); 
    sms.sendTextMessage(phoneNm,null,message,pi,null); 

} 

답변

1

, 긴 타이머 작업 앱이 시스템에 의해 '사망'할 수있다 전경에없는 경우 AlarmManager .Otherwise를 사용하는 것이 더 낫다을 실행합니다.