android - 在 Android 中使用 BroadcastReceiver、TimerTask 和 AsyncTask 每两分钟发送一封电子邮件的最佳方式

标签 android service android-asynctask broadcastreceiver intentservice

我有一个 broadcastReceiver 可以检测何时更换 Sim 卡。我想每 5 分钟左右发送一封包含手机位置的电子邮件。我有 3 个选择:

  1. 当 Sim 改变时:从 broadcastReceiver 启动一个服务,它启动一个 TimerTask。然后 TimerTask 启动一个发送电子邮件的 AsyncTask。

  2. 当 Sim 更改时:与第 1 点相同,但我启动了 IntentService 而不是服务。

  3. 当 Sim 改变时:从 BroadcastReceiver 启动一个服务,它启动一个 AlarmManager,然后是 AsyncTask。

你能告诉我哪个更好更安全吗? 谢谢!

最佳答案

您可以将 IntentServiceAlarmManager 结合使用。当 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/

相关文章:

java - 在 HttpClient 上应用 Asynctask

java - 单击表格行中的textView时出错

android - 控制用于 Android 缓存的 Google map

android - Android 中的字母数字 View

caching - 无法播放 Service Worker 中的缓存音频

java - 单击按钮后管理 mysql 连接

java - Android Firebase 。将数据添加到特定用户 Firebase 数据库

tomcat - 为什么我们在应用程序/服务中需要关闭端口和启动端口?

java - 使用 Intent 标志和 androidmanifest

Android 测试 - 如何同步 AsyncTask