1

在某些情况下,我的应用程序被启动通过调用 一个我Broadcast-ReceiversServices(ETC),但我想,以防止用于意图 组件开始。停止意图beeing执行 - 在应用程序子类

为什么:因为我需要做一些以前初始化工作不要跑,在任何 组件应该开始。但是,这项工作可以一个长时间运行的东西, 因此我不能只在主线程上执行我的应用程序子类内。

我在我的应用程序中继承Application的子类。因此,我的做法是 以某种方式干预我的应用程序子类的onCreate()和 的意图,而是启动我的特定服务,该服务运行事先初始化 并重新调用此后故意使用的意图。

你可以想象任何可能做到这一点吗? 谢谢!

Ps .:我有很多组件可能可能启动我的应用程序。我不想将我的条件代码包含在每个组件中。

回答

1

但我想阻止用于意图上手的组件。

除了崩溃你的应用程序,这是不可能的。而且,即使如此,组件也永远不会启动。

因此,我的做法是莫名其妙intervent意图在OnCreate()我的应用程序子类的,反而,开始我的一个特定的服务,它运行之前,初始化和重新调用的意图,这是之后有意使用。

缺少具有自定义框架实现的自定义ROM,这是不可能的。您无法访问所需的信息,也无法停止组件。

而且,如果你在定制ROM是一种可能性的情况下,移动这个初始化工作到核心操作系统进程(即不是一个Android SDK应用程序,而是一个标准的Linux进程启动在启动时) ,并让你的应用使用IPC来获取这些数据。

+0

伤心。我想知道,在其他任何事情开始之前,我应该如何长时间运行迁移或内部“应用程序数据更新”(如sql数据)。恐怕没有其他的可能是继承我的所有组件,并让它们继承初始化检查。 – JacksOnF1re

+0

@ JacksOnF1re:你早点工作。例如,假设您发布的应用更新具有重大架构更改,需要大量时间才能完成。安装更新后立即启动该工作。特别是对于选择自动更新的用户来说,工作可能会在应用程序的其他任何内容被调用之前完成。你不应该需要新的子类,因为你已经有了这些类。您的初始化逻辑可以驻留在单独的实用程序类中,而不是基本组件类。 – CommonsWare