覆盖Android应用程序中的后台服务

时间:2014-11-16 15:46:46

标签: android background android-studio accelerometer

我想在MyActivity.java中按下按钮。按下按钮时,加速度计应在后台启动。

我在MyActivity.java中使用此代码:

    // buttonBackground
    buttonStatistics.setOnClickListener(new View.OnClickListener(){
        // wordt uitgevoerd wanneer je klikt
        @Override
        public void onClick(View v){
            Log.d(TAG, "onClick: starting service");
            startService(new Intent(MyActivity.this, background.class));
            Toast.makeText(getApplicationContext(),
                    "Running in Background activated!", Toast.LENGTH_LONG).show();
      //      startActivity(new Intent(MyActivity.this, statistics.class));
        }
    });

在background.java中,我想在按下上面的按钮时自动运行onCreate()函数。

代码background.java:

public class background extends Service实现SensorEventListener {

    public SensorManager sensorManager;
    public Sensor sensorAccelerometer;
    private static final String TAG = "background";

    CountDownTimer countDownTimer;

//    @override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate();
        Log.d(TAG, "onCreate");
        sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        sensorAccelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        //   sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_GAME);

        alert();
    }

我试图将@override放在onCreate()之上,但这是一个服务,而不是一个Activity(它不起作用)。

问题:当我按下MyActivity.java中的按钮时,我想自动在background.java中运行onCreate()。

应用程序正常工作我没有错误,但它不能按我想要的方式工作。

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您正在以错误的方法编写代码。服务在onCreate中没有参数。删除它然后它应该工作。

@Override
public void onCreate() {
    super.onCreate();
    Log.d(TAG, "onCreate");
    sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    sensorAccelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
}

顺便说一下,我建议你在驼峰的情况下编写类名,如

public class Background extends Service {

}

答案 1 :(得分:0)

在服务中,您有onStartCommand方法:

所以把你要执行的代码放在onStartCommand()

public class Background extends Service implements SensorEventListener {

    public SensorManager sensorManager;
    public Sensor sensorAccelerometer;
    private static final String TAG = "background";

    CountDownTimer countDownTimer;

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        //your code
        return START_STICKY;
    }
}