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

在android中,使用BroadcastReceiver、TimerTask和AsyncTask每隔几分钟发送一封电子邮件的最佳方式,android,service,android-asynctask,broadcastreceiver,intentservice,Android,Service,Android Asynctask,Broadcastreceiver,Intentservice,我有一个广播接收器,可以检测Sim卡何时更换。我想每5分钟左右发送一封带有手机位置的电子邮件。我有三个选择: 当Sim卡被更改时:从broadcastReceiver启动服务,这将启动TimerTask。然后TimerTask启动一个发送电子邮件的异步任务 更改Sim卡时:与第1点相同,但我启动的是IntentService,而不是服务 更改Sim卡时:从BroadcastReceiver启动服务,启动AlarmManager,然后启动AsyncTask 你能告诉我哪一个更好更安全吗? 谢谢大家

我有一个广播接收器,可以检测Sim卡何时更换。我想每5分钟左右发送一封带有手机位置的电子邮件。我有三个选择:

  • 当Sim卡被更改时:从broadcastReceiver启动服务,这将启动TimerTask。然后TimerTask启动一个发送电子邮件的异步任务

  • 更改Sim卡时:与第1点相同,但我启动的是IntentService,而不是服务

  • 更改Sim卡时:从BroadcastReceiver启动服务,启动AlarmManager,然后启动AsyncTask

  • 你能告诉我哪一个更好更安全吗?
    谢谢大家!

    您可以将
    IntentService
    AlarmManager
    结合使用。当sim卡更换时,您的
    广播接收器应启动您的意向服务,然后服务发送电子邮件并安排下一次发送。查看并确保您知道何时停止发送电子邮件以避免耗尽电池电量

    您的服务应该如下所示:

     @Override
     protected void onHandleIntent(Intent intent)
     {
         // send email.
    
        // check whether or not sending next time
        if(canSendNextTime()){
            scheduleNextUpdate();
        }
    }
    

    非常感谢。我试试这个