我已经实现了一个似乎工作正常的步数计数类,但是我从主 Activity 中实例化它,并且每次加载主 Activity 时都会创建该类的另一个实例,从而导致添加重复的步骤。
我考虑过转换为单例来防止这种情况,但后来我认为它作为服务运行会更好,这样在应用程序不运行时仍然会计算步骤(我认为这就是它的工作原理?) .
如何最好地将类转换为可以在 list 文件中标记的服务?我需要访问应用程序上下文,因此我不确定如何通过 list 文件的启动来传递它。
public class StepCountingService implements SensorEventListener
{
private SensorManager sensorManager;
public StepCountingService(Context context)
{
//initialise class
}
@Override
public void onSensorChanged(SensorEvent event)
{
//step update logic
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy)
{
}
}
最佳答案
服务是一种选择,您必须将其设为前台服务,以防止 Android 在用户不使用您的应用程序时杀死您的应用程序。我在这里回答了一个类似的问题,关于如何做到这一点:
但就您而言,您可能还希望将其设为绑定(bind)服务,以便您的 Activity 可以连接到它并从中获取步骤信息。
https://developer.android.com/guide/components/bound-services
或者,您可以让您的服务更新数据库(或共享首选项文件),然后 Activity 可以简单地查询数据库,这样您就不需要绑定(bind)到服务。
关于访问应用程序上下文,服务是上下文包装器,因此它们无需传入任何内容即可访问应用程序上下文。
关于java - 将类转换为服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60382338/