所以,我有一个Android应用程序。我有..让我们说菜单>关于多个屏幕上的按钮或其他东西。我想跟踪用户推送它的频率以及退出应用程序时,我想将该计数发送到远程服务器。当他们再次启动应用程序时,我需要将该计数重置为0.
到目前为止,我想象一些简单的静态类
public static class ButtonCounter
{
static int Count;
public static void Start()
{
Count=0;
}
public static void Increment()
{
Count++;
}
public static void Stop()
{
//send to server
}
}
现在,困难的部分是我需要将Start
和Stop
方法全局插入到每个活动的OnStart
和OnStop
方法中......即使这样它仍然需要其他东西,以便当你从应用程序的一个屏幕前进到下一个屏幕时,不会调用Stop
。
基本上,我想要Stop
仅在离开代码I 拥有时才被调用(即隐藏活动,并转移到不在此应用程序内的活动) )..我希望Start
仅在输入我拥有的代码时被调用并留下外来(不是我的应用程序)代码。
我知道我的愿望可能不可能与Android的一切生命周期如何运作有关......但有人可以推动我如何最有效地做到这一点的正确方向吗?
(另外,我标记了Xamarin,但它同样适用于标准Java代码)
答案 0 :(得分:0)
如果您想要跟踪用户在整个使用应用程序时所执行的某些功能,而无需自行开发这些功能,则可以选择。我不确定这个问题是否属于这个问题。但是有一些API可供您使用,您可以在不同的地方放置几行代码来跟踪这样的内容。
一个这样的解决方案是在这里使用这样的服务:Flurry。通过这样的服务,您可以完成这项工作。如果您只想自己开发一个,请随意忽略此响应。当我自己使用这个时,它非常简单。我只是初始化一个Flurry变量,然后告诉它我想在这里点击或在那里跟踪一个函数调用。
答案 1 :(得分:0)
我的建议是创建一个扩展Activity的自定义基类,让所有活动都扩展该基类。
public class MyMonitoredActivity:Activity{
....
protected override void OnStart ()
{
base.OnStart();
ButtonCounter.Start();
}
protected override void OnStop ()
{
base.OnStop();
ButtonCounter.Stop();
}
}
然后你可以添加任何类型的布尔检查或者不像@JosephChilberry建议的那样。