怎么将类转换为服务
问题描述
我实现了一个似乎可以正常工作的步进计数类,但是我从主活动实例化了它,每次主活动被加载时,都会创建该类的另一个实例,从而导致重复步骤被添加。
我曾考虑过转换为单例以防止这种情况,但是我认为最好将它作为服务运行,以便在应用程序不运行时仍可以计算步骤(我认为这是如何工作的?)。
对我来说,如何最好地将类转换为清单文件中可以降级的服务?我需要访问应用程序上下文,因此我不确定如何通过清单文件中的启动方式传递它。
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在用户不使用时杀死您的应用。我在这里回答了类似的问题:
但是,在您的情况下,您可能还想使其成为绑定服务,以便您的活动可以连接到该服务并从中获取步骤信息。
https://developer.android.com/guide/components/bound-services
或者,您可以让您的服务更新数据库(或共享首选项文件),然后该活动可以简单地查询数据库,而您将避免绑定到该服务。
关于访问应用程序上下文,服务是上下文包装器,因此它们可以访问应用程序上下文而无需传入任何内容。
思路二:
我想把它做成单例,实际上很简单:
将此代码(适应它)添加到类中。
class count { private static count n = null; public static count getInstance(){ if (n == null){ n = new count(); } return n; } private count(){ //constructor } }
到主文件:
count n = count.getInstance();
以上内容就是爱站技术频道小编为大家分享的怎么将类转换为服务,看完以上分享之后,大家应该都知道怎么将类转换为服务了吧。我相信大家看了这篇文章懂的就更多了,能有所进步和有所收获。