我有一个 broadcastReceiver 可以检测何时更换 Sim 卡。我想每 5 分钟左右发送一封包含手机位置的电子邮件。我有 3 个选择:
当 Sim 改变时:从 broadcastReceiver 启动一个服务,它启动一个 TimerTask。然后 TimerTask 启动一个发送电子邮件的 AsyncTask。
当 Sim 更改时:与第 1 点相同,但我启动了 IntentService 而不是服务。
当 Sim 改变时:从 BroadcastReceiver 启动一个服务,它启动一个 AlarmManager,然后是 AsyncTask。
你能告诉我哪个更好更安全吗? 谢谢!
最佳答案
您可以将 IntentService
与 AlarmManager
结合使用。当 sim 卡改变时,您的 broadcastReceiver
应该启动您的 Intent 服务,然后服务发送电子邮件并安排下一次发送。看看this answer并确保您知道何时停止发送电子邮件以避免耗尽电池电量。
您的服务应如下所示:
@Override
protected void onHandleIntent(Intent intent)
{
// send email.
// check whether or not sending next time
if(canSendNextTime()){
scheduleNextUpdate();
}
}
关于android - 在 Android 中使用 BroadcastReceiver、TimerTask 和 AsyncTask 每两分钟发送一封电子邮件的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22113656/