怎么将类转换为服务

来源:爱站网时间:2021-12-14编辑:网友分享
我实现了一个似乎可以正常工作的逐步计数类,但是我是从main活动中实例化它的,每次加载main活动时都会创建该类的另一个实例,面对这个问题,爱站技术小编要怎么去处理呢,小编去查找了好些资料,现在把这些资料都整理成了一份,供大家参考,希望能给大家带来一定的帮助和希望,喜欢这篇文章的话选择收藏吧。

问题描述


我实现了一个似乎可以正常工作的步进计数类,但是我从主活动实例化了它,每次主活动被加载时,都会创建该类的另一个实例,从而导致重复步骤被添加。

我曾考虑过转换为单例以防止这种情况,但是我认为最好将它作为服务运行,以便在应用程序不运行时仍可以计算步骤(我认为这是如何工作的?)。

对我来说,如何最好地将类转换为清单文件中可以降级的服务?我需要访问应用程序上下文,因此我不确定如何通过清单文件中的启动方式传递它。

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在用户不使用时杀死您的应用。我在这里回答了类似的问题:

How to create an always on background service which detect when WiFi, Bluetooth and Mobile Data are turned on and off?

但是,在您的情况下,您可能还想使其成为绑定服务,以便您的活动可以连接到该服务并从中获取步骤信息。

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();

以上内容就是爱站技术频道小编为大家分享的怎么将类转换为服务,看完以上分享之后,大家应该都知道怎么将类转换为服务了吧。我相信大家看了这篇文章懂的就更多了,能有所进步和有所收获。

上一篇:AuthorizationCodeInstalledApp-Android替代

下一篇:如何在片段活动中使用用户名?

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载