我想在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()。
应用程序正常工作我没有错误,但它不能按我想要的方式工作。
感谢任何帮助。
答案 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;
}
}