后台服务下载邮件混乱

时间:2014-11-14 10:32:22

标签: android javamail intentservice

我有一个Helper类和方法,我通过javamail下载邮件。它在AsyncTask内正常工作。

现在我想实现后台服务,该服务将能够:

  • 按需运行
  • 如果没有按需运行,则定期运行
  • 有一种我知道它已经结束的方法
  • 在应用程序内部和外部工作(例如,我按下刷新按钮并调用相同的服务)

我目前使用Service创建了ScheduledThreadPoolExecutor,我可以定期(每5分钟)运行一次。我只是不知道如何按需运行。

我应该使用Intent服务,仅Service,还是SyncAdapter?什么是最好的选择?

这是我到目前为止所做的:

public class BackgroundLoadingService extends Service {
@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onCreate() {

    final ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1);

    executor.scheduleAtFixedRate( new Runnable() {

        @Override
        public void run() {
            Log.i("LocalService", "onCreate");

            if (isOnline(BackgroundLoadingService.this))
            {
                getEmails(BackgroundLoadingService.this,"test",true);
            }

        }
    }, 1, 60*5, TimeUnit.SECONDS );
    super.onCreate();
}

@Override
public int onStartCommand( final Intent intent, final int flags, final int startId ) {
    Log.i("LocalService", "onstartcommand");

    return Service.START_STICKY;
}

}

0 个答案:

没有答案