2012-08-22 34 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

相关问题