我试图首次创建一个服务,该服务每隔15秒就会从活动中运行一种方法,而当应用程序是手机的背景时,一旦选中了切换按钮,到目前为止,本教程都没有帮助。到目前为止,这是我的代码。如果我在这里看起来很蠢,请原谅我,这是我第一次使用服务。
服务编号
package com.example.adrian.trucktracker;
import android.app.Service;
import android.content.Intent;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import java.util.Timer;
import java.util.TimerTask;
public class AutoUpdateService extends Service {
Locator locator = new Locator();
Timer myTimer = new Timer();
private class MyTimerTask extends TimerTask
{
@Override
public void run() {
Handler handler = new Handler(Looper.getMainLooper());
handler.postDelayed(new Runnable() {
@Override
public void run() {
locator.TemperatureCatch();
}
}, 1000 );
}
}
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
MyTimerTask myTimerTask = new MyTimerTask();
myTimer.scheduleAtFixedRate(myTimerTask, 0, 15000);
}
@Override
public void onDestroy() {
super.onDestroy();
myTimer.cancel();
stopSelf();
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}
}
我的切换按钮代码
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked)
{
startService(new Intent(this,AutoUpdateService.class));
}
else
{
stopService(new Intent(this,AutoUpdateService.class));
}
最佳答案
您正确使用服务。不要使用Timer,因为它是您不需要的额外线程。您可以使用AlarmManager安排每15秒(间隔)启动一次服务意图。这将通过在服务中调用onStartCommand来触发服务的间隔时间,您可以通过从onStartCommand的参数中读取(如果需要)意图来执行所需的任何操作。