【问题标题】:Getting object of service获取服务对象
【发布时间】:2016-11-09 13:43:06
【问题描述】:

我正在尝试获取我的 Services 对象,我正在使用此代码进行此操作

public class Service extends android.app.Service {
private Handler handler = new Handler();
static Service SELF;
MainActivity mainActivity;
BluetoothSPP bluetoothSPP;

public static Service getInstance() {
    return SELF;
}

@Override
public void onCreate() {
    super.onCreate();
    SELF = this;
    }
}

但在启动服务后getInstance() 给出了 null。为什么?

【问题讨论】:

    标签: android service


    【解决方案1】:

    Service 和 Activity 是不同的组件,由 Android 管理,所以你不应该保存对 Activity 的引用 insie Service。 在这种情况下的解决方案 - 使用服务绑定 - 您可以将所有方法移动到单独的接口中,一旦 Service 绑定到 Activity,您的 Service 和 Activity 将通过该接口进行通信并从 Binder 返回它。见:https://developer.android.com/guide/components/bound-services.htmlBind service to activity in Android

    【讨论】:

    • 但是使用这种方法我将无法在应用程序关闭时将服务保持在后台
    • 您可以启动服务并绑定到它,所以应用程序关闭后它会保持活动状态
    • 所以你说启动服务后我应该创建一个新对象并绑定它?没有意义
    • 服务会自行运行,可以保留所有对象。您定义与该服务交互的接口并在服务绑定时获取它。如果 Activity 暂停或停止,您将与服务解除绑定并在重新创建时再次绑定。如果它已启动并绑定到,它将一直运行,直到您调用 .stopService()
    • 你能发布代码吗?我不知道如何实现它
    猜你喜欢
    • 1970-01-01
    • 2019-02-18
    • 2017-03-08
    • 2016-04-17
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    • 2017-02-21
    • 2014-09-01
    相关资源
    最近更新 更多