Android 安卓定时器内部服务

Android 安卓定时器内部服务,android,Android,我在安卓服务里面有定时器,我需要这个定时器启动一次,并且我对这个服务有多个调用。每次调用startService()时,服务都会启动新的计时器(计时器执行其作业的次数与调用startService()的次数相同) 这是密码 private TimerTask notificationTask = new TimerTask() { @Override public void run() { posNotification(); } };

我在安卓服务里面有定时器,我需要这个定时器启动一次,并且我对这个服务有多个调用。每次调用
startService()
时,服务都会启动新的计时器(计时器执行其作业的次数与调用
startService()
的次数相同)

这是密码

    private TimerTask notificationTask = new TimerTask() {
    @Override
    public void run() {
        posNotification();
    }
};

    @Override 
public void onCreate() {
    super.onCreate();
    notificationTimer.schedule(notificationTask, 1000L, 10 * 1000L);
}

您可以将值保留为共享首选项,也可以使用全局变量。最初将其设置为0。调用服务时,请检查该值。如果为0,则启动计时器并将全局值设置为1。所以下次,它不会启动你的计时器。这对你有意义吗?请查看我准备的示例代码,并告诉我它是否解决了您的问题:

package com.example.timerinservice;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

    Button btnStartService;
    Context context;
    int service_count = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        context = MainActivity.this;
        btnStartService = (Button) findViewById(R.id.buttonStartService);

        btnStartService.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                Intent intent = new Intent(context, TimerService.class);
                intent.putExtra("servicecount", service_count);
                context.startService(intent);
                service_count++;
            }
        });
    }

}

-----------------
package com.example.timerinservice;

public class GlobalVariable {
    public static boolean TIMER_STYARTED = false;
}
-----------------
package com.example.timerinservice;

import java.util.Timer;
import java.util.TimerTask;

import android.app.IntentService;
import android.content.Intent;
import android.util.Log;

public class TimerService extends IntentService {

    Timer notificationTimer;
    int get_service_count = 0;

    public TimerService() {
        super("timerservice");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        get_service_count = intent.getExtras().getInt("servicecount");
    }

    @Override
    public void onCreate() {
        super.onCreate();
        if(!GlobalVariable.TIMER_STYARTED){
            notificationTimer = new Timer();
            notificationTimer.schedule(notificationTask, 1000L, 10 * 1000L);

            GlobalVariable.TIMER_STYARTED = true;
        }

    }

    private TimerTask notificationTask = new TimerTask() {
        @Override
        public void run() {
           //posNotification(); 
            Log.d("INSIDE","run() of TimerTask for: "+get_service_count);
        }
    };
}

请查找上面编辑的代码,并让我知道它是否解决了您的问题。