2010-02-09 51 views
42

是否有一些事件/接收器或安裝之後或直接安裝後處理第一次執行?還是我需要它與偏好模擬?有沒有在android安裝事件?

+0

我在寫一個服務。它沒有GUI。我該如何安排服務每天運行? (看來我不行,因爲看起來我不能在執行後直接執行代碼。)它只能手動安裝,所以可以使用adb,但這似乎沒有必要。 – user2768

回答

47

ACTION_PACKAGE_ADDED廣播意圖,但正在安裝的應用程序不會收到此。

因此,檢查是否設置了首選項可能是最簡單的解決方案。

SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(this); 
boolean firstRun = p.getBoolean(PREFERENCE_FIRST_RUN, true); 
p.edit().putBoolean(PREFERENCE_FIRST_RUN, false).commit(); 
+0

謝謝很多!我一直在尋找這個意圖,我有一個服務,必須每秒都有安裝數據包的最新知識,這個意圖我可以緩存,直到發生變化。 –

1

我不認爲有這樣的事情,我不認爲這是一個好主意:通常你不僅要處理安裝,而且還要處理一些更新(比如說:具有特性的新版本)或者正確初始化一些資源。

對於資源,最好的方法是直接檢查它們。

對於該版本,我使用數據庫,這很容易。

+0

我已經給出了上述動機(即,這是一個好主意):http://stackoverflow.com/questions/2227604/is-there-on-install-event-in-android#comment55110087_2227604 – user2768

1

SQLiteOpenHelper的OnUpgrade方法在數據庫版本更改時調用。我想這可以用來做其他事情,而不僅僅是處理新的模式。

+6

對不起,我相信只有正確的做法 - 處理新的模式。參考SOLID的單一響應原則和常識。只是在有人會看到它。 –

+0

每當數據庫版本發生變化時都會調用它,所以不是一個好的做法。 – dramzy