我正在开发的代码(android 应用程序)接收短信,如果短信来自某个号码,那么它会返回预定义的短信。这一切都很好,虽然我想添加一个计时器,以便回复看起来很真实。通过一些研究,我想出了下面的代码来尝试延迟代码,以便消息在 30 秒延迟后发送。
我定义了一个名为 Timer1 的新计时器,延迟 30 秒,并在顶部定义了一个名为 tt1 的 TimerTask,然后在 onReceive() 中,就在我调用 sendSMS 方法之前,我调用了启动计时器的 timer() 方法。
但是,计时器永远不会停止,消息也永远不会发送。该应用程序最终在几次后崩溃谁能看到我做错了什么?
static Timer timer1 = new Timer();
static long delay = 30000;
static TimerTask tt1;
private BroadcastReceiver intentReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//---gather up all the necessary user input---
prefs = getSharedPreferences(prefName, MODE_PRIVATE);
String textMessage = (String) prefs.getString(NAME_KEY, "");
final Button btn2 = (Button)findViewById(R.id.btnContacts);
String phoneNumber = (String) btn2.getText();
String Sender = (String) intent.getExtras().getString("Sender");
if(Sender.equals(phoneNumber))
{
timer();
sendSMS(phoneNumber, textMessage);
}
}
}
};
//---holds the delay for realistic reply time---
public static void timer()
{
timer1.schedule(tt1 ,0,delay);
}
//---sends an SMS message to another device---
public void sendSMS(String phoneNumber, String message)
{
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, null, null);
}
编辑:我现在使用 handler.postDelayed 暂停发送文本。这效果更好
在这里找到 handler.postDelayed 的良好初学者资源:http: //www.appaholics.in/running-a-task-with-a-delay/