1

在某些情況下,我的應用程序被啓動通過調用 一個我Broadcast-ReceiversServices(ETC),但我想,以防止用於意圖 組件開始。停止意圖beeing執行 - 在應用程序子類

爲什麼:因爲我需要做一些以前初始化工作不要跑,在任何 組件應該開始。但是,這項工作可以一個長時間運行的東西, 因此我不能只在主線程上執行我的應用程序子類內。

我在我的應用程序中繼承Application的子類。因此,我的做法是 以某種方式干預我的應用程序子類的onCreate()和 的意圖,而是啓動我的特定服務,該服務運行事先初始化 並重新調用此後故意使用的意圖。

你可以想象任何可能做到這一點嗎? 謝謝!

Ps .:我有很多組件可能可能啓動我的應用程序。我不想將我的條件代碼包含在每個組件中。

回答

1

但我想阻止用於意圖上手的組件。

除了崩潰你的應用程序,這是不可能的。而且,即使如此,組件也永遠不會啓動。

因此,我的做法是莫名其妙intervent意圖在OnCreate()我的應用程序子類的,反而,開始我的一個特定的服務,它運行之前,初始化和重新調用的意圖,這是之後有意使用。

缺少具有自定義框架實現的自定義ROM,這是不可能的。您無法訪問所需的信息,也無法停止組件。

而且,如果你在定製ROM是一種可能性的情況下,移動這個初始化工作到核心操作系統進程(即不是一個Android SDK應用程序,而是一個標準的Linux進程啓動在啓動時) ,並讓你的應用使用IPC來獲取這些數據。

+0

傷心。我想知道,在其他任何事情開始之前,我應該如何長時間運行遷移或內部「應用程序數據更新」(如sql數據)。恐怕沒有其他的可能是繼承我的所有組件,並讓它們繼承初始化檢查。 – JacksOnF1re

+0

@ JacksOnF1re:你早點工作。例如,假設您發佈的應用更新具有重大架構更改,需要大量時間才能完成。安裝更新後立即啓動該工作。特別是對於選擇自動更新的用戶來說,工作可能會在應用程序的其他任何內容被調用之前完成。你不應該需要新的子類,因爲你已經有了這些類。您的初始化邏輯可以駐留在單獨的實用程序類中,而不是基本組件類。 – CommonsWare