【发布时间】:2019-04-28 01:19:47
【问题描述】:
我需要每秒钟对数据库和其他作业执行少量请求。我使用 Service、Timer 和 AsyncTask 类在后台进行工作。在最初的几分钟内它还可以并且没有延迟,但几分钟后它变得越来越慢。我如何在没有这种不良影响的情况下处理我的工作:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
final Handler handler = new Handler();
Timer timer = new Timer();
TimerTask doAsynchronousTask = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
PerformBackgroundTask performBackgroundTask = new PerformBackgroundTask();
performBackgroundTask.execute();
}
});
}
};
timer.schedule(doAsynchronousTask, 0, 1000);
return Service.START_STICKY;
}
class PerformBackgroundTask extends AsyncTask<Void, Void, Void>{
@Override
protected Void doInBackground(Void... voids) {
// do database queries and other ...
return null;
}
}
我已经为此使用了 IntentService 和 AlarmManager 并且没有任何改变。从 logcat 中只使用了 4 个线程池。
【问题讨论】:
标签: android service android-asynctask