Java';s TimerTask只能在短时间内工作?
我正在为android编写这段代码,它允许我在某个时间通过点击按钮(send)发送消息。为此,我创建了一个实现TimerTask的类,以便代码在指定时运行。这适用于短时间间隔,如5分钟到一小时,但当我将代码设置为在一小时后运行时,它将不会执行。我不确定我是否编码错误,或者这是否是一个常见问题,但我想知道是否有解决方法 相关代码: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
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上,对于长时间运行的计时器任务,您最好使用。否则,如果您的应用程序不在前台,它可能会被系统“杀死”