在Android中无法重启服务?

时间:2017-05-25 08:43:12

标签: android

最近,我更换了新的 oppo 手机,发生了一些奇怪的事情。 当我从 sony 手机中的应用列表中移除应用时,我可以使用以下代码重新启动服务并计算时间。 但是,在 oppo 中发生了一件奇怪的事情,它可以重新启动服务并打印 ChatService OnCreate sensorstart ,但不能计算数字。

SensorService.java

public int counter=0;
public SensorService(Context applicationContext) {
    super();
    Log.i("HERE", "here I am!");
}

public SensorService() {
}

@Override
public void onCreate() {
    super.onCreate();
    System.out.println("ChatService onCreate");
    startTimer();
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    super.onStartCommand(intent, flags, startId);
    System.out.println("sensorstart " );
    startTimer();
    return START_STICKY;
}

@Override
public void onDestroy() {
    super.onDestroy();
    Log.i("EXIT", "ondestroy!");
    Intent broadcastIntent = new Intent("uk.ac.shef.oak.ActivityRecognition.RestartSensor");
    sendBroadcast(broadcastIntent);

    stoptimertask();
}

private Timer timer;
private TimerTask timerTask;
long oldTime=0;
public void startTimer() {
    //set a new Timer
    timer = new Timer();

    //initialize the TimerTask's job
    initializeTimerTask();

    //schedule the timer, to wake up every 1 second
    timer.schedule(timerTask, 1000, 1000); //
}

/**
 * it sets the timer to print the counter every x seconds
 */
public void initializeTimerTask() {
    timerTask = new TimerTask() {
        public void run() {
            Log.i("in timer", "in timer ++++  "+ (counter++));
        }
    };
}

/**
 * not needed
 */
public void stoptimertask() {
    //stop the timer, if it's not already null
    if (timer != null) {
        timer.cancel();
        timer = null;
    }
}

@Nullable
@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onTaskRemoved(Intent rootIntent){
    super.onTaskRemoved(rootIntent);
}

SensorRestarterBroadcastReceiver.java

public class SensorRestarterBroadcastReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    Log.i(SensorRestarterBroadcastReceiver.class.getSimpleName(), "Service Stops! Oooooooooooooppppssssss!!!!");

    context.startService(new Intent(context, SensorService.class));;
} }

0 个答案:

没有答案