2012-08-22 66 views
0

我想要檢測每次用戶打開應用程序,通過點擊家庭/桌面圖標。似乎沒有一個簡單的方法來做到這一點。找到了一些解決方法,但似乎沒有什麼可靠的。檢測家庭/桌面應用程序啓動的可靠方法?

這樣的事情,擴展應用程序對象和使用方法「onCreate()」,但這不是我需要的,因爲它不會總是在用戶點擊應用程序的圖標時調用(可以從後臺啓動,不一定會重新創建應用程序),並且該應用程序在運行時可能會被銷燬和重新創建。然後Application.onCreate()也會被調用。

還有一些涉及BroadcastReceiver和檢查意向標誌的方法,但一切似乎也不太可靠?

我需要這個,因爲我想跟蹤谷歌分析,當用戶打開應用程序。

謝謝

回答

0

試着看看「android應用程序生命週期」。

onResume啓動每次啓動您的活動

否則嘗試:onStart被稱爲每次您的應用程序已發送到「後臺」的時間。它在開發人員docs中的確如此。

+0

那麼,我知道生命週期,每次啓動應用程序時都無法檢測到。每當一個活動開始時,就會調用你所說的「onResume」,並且當應用程序的前景中的東西消失時等等,所以它不適合。 – Ixx

+0

好吧,你不能兩種方式,最近的事情是onStart然後。這是一條中間路線。看看我發佈給@Zoombie的鏈接回答 –

+0

當應用程序內部明確調用活動時,或者在銷燬後重新創建活動時,也會調用onStart,並且如您所說,當應用程序位於後臺/後面時一些其他活動。當其他活動關閉時,應用程序再次變爲可見(沒有用戶明確啓動它),則調用onStart()。 – Ixx

0

每當你的應用程序是通過正常的方式啓動[如果用戶點擊在回家的啓動器圖標],然後主要活動針對

<activity android:name=".xyz" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>

定義,在這個應用的onCreate方法一定會被調用。所以在這裏你可以把你的谷歌Analaytics跟蹤代碼。

在其他方面,如廣播接收機,它確實取決於哪個活動被調用,以及它是否是應用程序的開始。你也可以投入onReceive方法

據我所知,Android已經定義了啓動應用程序的方式,它總是可靠的。只有Android的生命週期有點棘手。

+0

如果你沒有關閉它,那麼不會調用onCreate/android os havnt殺死它。 它可能只是躺在背景中。 http://developer.android.com/reference/android/app/Activity.html –

+0

如果我從應用程序內部明確地啓動此活動,或者應用程序被銷燬並重新創建,也會調用onCreate。這些是我不想跟蹤的情況。 – Ixx

+0

如果應用程序背景和前景是大小寫的,那麼它有不同的生命週期方法,在上面的情況下,onRestart然後onResume將被順序調用。但是問題僅僅在於可靠的方式來從家裏啓動應用程序,它沒有提到應用程序在前臺或後臺的任何內容 – Zoombie

相關問題