android – Flurry应该在Services和AsyncTasks中使用?
作者:互联网
我正在尝试在我的应用中使用Flurry Analitcs.
在阅读sdk文档后,我在应用程序的每个活动中执行了以下代码:
@Override
protected void onStart() {
FlurryAgent.onStartSession(this, "xxxxxxxxxxxxxxxxx");
super.onStart();
}
@Override
public void onStop() {
super.onStop();
FlurryAgent.onEndSession(this);
}
我的疑问是我的应用程序中有很多AsyncTask和一些IntentServices,并且在文档中他们说:
Insert a call to FlurryAgent.onStartSession(Context, String), passing it a reference
to a Context object (such as an Activity or Service)
那么,我应该在onHandleIntent方法中调用onStartSession吗?我应该在哪里调用onEndSession?在最后的过程中和最后的块中?
关于AsyncTasks,即使我通过我的任务传递我的活动上下文,我也应该实现它吗?
解决方法:
FlurryAgent作为应用程序中的单例实体存在.无论何时调用onStartSession(),您都会开始一个新会话,并且调用onEndSession()将结束当前活动的会话.这与您调用FlurryAgent的线程无关.
您希望如何在应用程序中定义会话在很大程度上取决于您.对于大多数应用程序,会话定义为用户与应用程序交互的时间段.这就是文档建议在Activity生命周期函数中调用onStartSession()和onEndSession()的原因,以便会话将包含所有用户交互.
如果在显示Activity时正在执行AsyncTask,则不需要再次调用onStartSession(),因为它已经从封闭的Activity中被跟踪.如果您有一个独立于活动运行的后台服务,则由您决定何时调用onStartSession().
请注意,如果您有一个可以无限期运行的服务,则应定期调用onEndSession()以便报告数据,因为数据仅在会话启动和结束时报告.
标签:android,flurry 来源: https://codeday.me/bug/20190625/1284472.html