【发布时间】: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