Android 与应用程序生命周期密切相关的本地服务实现

Android 与应用程序生命周期密切相关的本地服务实现,android,android-activity,android-service,Android,Android Activity,Android Service,在我的应用程序中。我有一个扩展的应用程序类,比如MyApp,我有几个活动,比如A、B、C、D,其中A是默认活动或根活动。我想在OnCreate的MyApp中启动一个服务(比如说MyService),并在用户从我的应用程序注销时停止它 然而,我需要一种强有力的方式在我的活动(a、B、C、D)、MyApp和MyService之间进行沟通。现在,应用程序将从内存中第二次启动。OnCreate of MyApp将不会被调用,因此我想从单击活动A中的登录按钮开始服务。现在我有一些问题:- 我已经试过sta

在我的应用程序中。我有一个扩展的应用程序类,比如MyApp,我有几个活动,比如A、B、C、D,其中A是默认活动或根活动。我想在OnCreate的MyApp中启动一个服务(比如说MyService),并在用户从我的应用程序注销时停止它

然而,我需要一种强有力的方式在我的活动(a、B、C、D)、MyApp和MyService之间进行沟通。现在,应用程序将从内存中第二次启动。OnCreate of MyApp将不会被调用,因此我想从单击活动A中的登录按钮开始服务。现在我有一些问题:-

  • 我已经试过startService和bindService,startService的问题是我没有得到服务引用以备将来使用。如果我使用bindService,将使我的服务在整个应用程序生命周期中可见,直到我明确停止它。哪种方法适用于我的情况

  • 在服务和MyApp/活动之间实现通信的最佳方式是什么,反之亦然?我所说的沟通是指两种类型的沟通,1。这需要UI线程,即启动一些活动,显示一些对话框等。类似于myService.doSomehing()的内容

  • 该服务有一个执行网络通信的线程,该线程在应用程序的生命周期内不应关闭。START_STICKY将为我工作,否则我需要为此做额外安排


  • 此应用程序应该为姜饼+设备运行…

    在扩展应用程序中绑定服务,然后创建一个公共方法 (getBinding)返回该绑定对象。。。在根/默认活动“A”中,通过浇铸的getApplication对象检索上的getBinding方法创建。。所有活动关闭时取消绑定(使用每个getBinding方法保留计数器)

    检查这个

    因此,对于1)绑定服务 2) 绑定对象
    3) 开始粘性就足够了

    谢谢@baboo的快速回答,如果我在创建应用程序时进行内部绑定。。。除其他活动外,MyApp的公共方法getMyService()还可以返回在ServiceConnection的onServiceConnected中接收到的服务对象。这对我有用吗?假设我想在服务内部的UI线程中运行一些代码。。。最好的方法是什么?是的,它会起作用。。进一步深入了解这一机制,检查Ui线程是否存在问题。在我自己的应用程序中实现此机制时进行了此研究。也请检查此项:)。。它有助于处理绑定服务的内存泄漏问题