【问题标题】:How to call MainActivity method using Service after MainActivity's destroyedMainActivity销毁后如何使用Service调用MainActivity方法
【发布时间】:2019-11-04 08:43:48
【问题描述】:

我正在使用一个重复需要调用 MainActivity 方法的服务。 MainActivity 销毁后,该服务在后台运行。但是当调用上述方法时,它会崩溃。

那么,即使在应用程序被杀死后,我如何使用服务访问类。

我的服务类的方法

public int onStartCommand(Intent intent, int flags, int startId) {

    // This service runs in background 

    broadcastIntent(); // Start my MainActivity. Because the app is killed

}

【问题讨论】:

  • 阅读Intent 框架,以及如何从服务中广播意图:1) 如果未启动,则启动活动,如果活动未启动,则触发方法onNewIntent()已经开始了。阅读如何在每种情况下访问意图,以及生命周期在 Android 中的工作方式。通过对上述内容的正确理解,您可能能够轻松编写代码 - 如果没有正确理解,这对于一个好的 stackoverflow 问题来说太宽泛了。
  • 我搜索了很多,但如果应用程序被杀死,意图就无法读取 java.class
  • 如果应用被杀掉,你的服务就会死掉,所以它什么也做不了。但是如果服务正在运行,最好使用意图(或类似的东西)与活动进行通信,而不是直接调用方法(因为这不是 Android 的工作方式)。如果您使用意图来启动活动,您将在onCreate()onNewIntent() 中检查它,然后通过这些方法将控制权传递给您希望触发的实际代码。如果您希望服务在活动处于活动状态时进行通信,请在活动中注册广播接收器。
  • 但如果应用程序关闭,onCreate 将不会被调用。我想要的是在关闭时打开一个应用程序。 (通过使用后台服务)
  • 如果您使用startActivity(Intent) 发送广播,那么活动将开始。这正是该方法的作用。我的建议是阅读有关如何在 Android 中使用意图,以及如何使用它们来启动不同的活动,以及活动如何读取意图中发送的数据。

标签: java android android-intent android-service android-lifecycle


【解决方案1】:

也许有一些 LiveData ? 我已经开始了解它是如何工作的,也许它可以帮助你

【讨论】:

  • 如果你发现了什么,请告诉我?。会有很大帮助
  • 你想启动什么样的方法?你能放一些代码,让我看看它是否与我所做的相似并帮助你?
  • 我想访问任何 Java 类并运行它的方法。例如 MainActivity.java。情况是应用程序已经被杀死。添加代码
  • 为什么不把方法放在一个类而不是活动中?所以你可以从主要活动或另一个活动中调用它?例如,您创建一个类“常用方法”并将所有方法放入其中。由于它不是一项活动,因此始终可以访问。例如,我有一个“callAPI”类/服务,其中包含向 API 发送请求所需的所有方法,我可以调用我所在的任何片段/活动。
  • 好吧,如果应用未运行,则无法访问类。
【解决方案2】:

万一有人在寻找它,我找到了答案:

无论应用是否运行,都可以使用 Intent 访问在 AndroidManifest 中声明的类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-12
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    • 2015-12-19
    • 2018-12-19
    • 2019-05-22
    • 1970-01-01
    相关资源
    最近更新 更多