0

所以,我有一个 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
  }
}

现在,困难的部分是我需要以某种方式将StartandStop方法全局插入到每个活动的OnStartandOnStop方法中......即使那样它仍然需要其他东西,这样Stop当你从应用程序的一个屏幕前进到时不会调用它下一个。

基本上,不知何故,我只想Stop在它离开我拥有的代码时被调用(即,隐藏活动,并移动到不在此应用程序内的活动)..我只想Start在它进入时被调用我拥有的代码并留下外国(不是我的应用程序)代码。

我知道我的愿望可能无法实现,Android 的生命周期是如何运作的。但是有人可以推动我朝着如何最有效地做到这一点的正确方向前进吗?

(另外,我标记了 Xamarin,但它也应该同样适用于标准 Java 代码)

4

2 回答 2

0

我的建议是创建一个扩展 Activity 的自定义基类,并让您的所有活动都扩展该基类。

public class MyMonitoredActivity:Activity{
    ....
    protected override void OnStart ()
    {
        base.OnStart();
        ButtonCounter.Start();
    }

    protected override void OnStop ()
    {
        base.OnStop();
        ButtonCounter.Stop();

    }
}

然后,您可以添加任何类型的布尔检查或不喜欢 @JosephChilberry 建议的内容。

于 2013-08-17T12:42:25.543 回答
0

如果您想跟踪用户在使用应用程序的整个过程中所做的某些功能,而不必自己开发它们,那么您可以使用一些选项。如果是这种情况,我不能完全确定这个问题。但是有一些 API 可供您使用,您可以在不同的地方放置几行代码来为您跟踪此类内容。

一种这样的解决方案是在这里使用这样的服务:Flurry。有了这样的服务,这项工作已经为您完成了。如果您只对自己开发一个感兴趣,请随意忽略此响应。当我自己使用这个时,它非常简单。我只是初始化了一个 Flurry 变量,然后告诉它我想要跟踪单击此处或那里的函数调用。

于 2013-08-16T20:26:52.973 回答