Java';s TimerTask只能在短时间内工作?

Java';s TimerTask只能在短时间内工作?,java,android,datetime,android-pendingintent,timertask,Java,Android,Datetime,Android Pendingintent,Timertask,我正在为android编写这段代码,它允许我在某个时间通过点击按钮(send)发送消息。为此,我创建了一个实现TimerTask的类,以便代码在指定时运行。这适用于短时间间隔,如5分钟到一小时,但当我将代码设置为在一小时后运行时,它将不会执行。我不确定我是否编码错误,或者这是否是一个常见问题,但我想知道是否有解决方法 相关代码: send = (Button) findViewById(R.id.send); send.setOnClickListener(new OnClick

我正在为android编写这段代码,它允许我在某个时间通过点击按钮(send)发送消息。为此,我创建了一个实现TimerTask的类,以便代码在指定时运行。这适用于短时间间隔,如5分钟到一小时,但当我将代码设置为在一小时后运行时,它将不会执行。我不确定我是否编码错误,或者这是否是一个常见问题,但我想知道是否有解决方法

相关代码:

    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);

}

在Android上,对于长时间运行的计时器任务,您最好使用。否则,如果您的应用程序不在前台,它可能会被系统“杀死”