正确的线程日志分析方法

时间:2017-01-05 11:24:33

标签: java android multithreading

我准备将分析添加到我的Android应用程序中,因为我正在考虑采用正确的方法。我已经研究过一些东西,但想要对这个社区有所了解。基本上我根本不希望在UIThread上完成这个与分析相关的工作,所以我想出了两个解决方案。

  1. 使用自定义AsyncTask将我的分析事件发布到服务器。因此它不会干扰UIThread。
  2. 使用自定义Runnable,它将发布到专用的handlerThread自定义类,它将是一种单例类。因此,这些事件中的每一个都可以排队到专用的handlerThread中,并且可以遍历发布到其中的事件。
  3. 在我的实现中,我想保持事件线程的优先级低,并且我有自己的服务器集来跟踪这些事件。有人可以告诉我,这两者中哪一个是好的选择,或者我的方向是完全错误的?

    提前致谢。

1 个答案:

答案 0 :(得分:0)

我不确定你的实际想法是什么...... 据我所知,您尝试将应用程序使用情况的日志保存并上传到您的服务器,如果您需要,那么有些服务可以为您做到这一点,如MixPanel。

如果您尝试记录事物并将它们自己发送到服务器 - 那么日志记录应该发生在所发生的事情的同一个线程中,但是发送应该是一个不同的模块,负责移动这些日志时它方便了服务器。

可以使用事件总线(如Greenrobot' EventBus)或处理该事件的单通道模块从应用程序的每个角落和线程发送日志。

我建议接收这些事件的模块 - 将是一个在后台运行的服务,它应该打包日志并在可能的情况下将它们上传到您的服务器,如果您不实时需要这些信息 - 不要立即发送每个日志。

希望我帮助,如果没有,请详细解释:)

  

更新:查看Google的Volley这个库会照顾你的发送机制,只要知道AsyncTask不再是一个好的解决方案,它有许多缺陷,通常情况下,在不同的线程上发送任何类型的通信总是更好,然后是UI线程,我建议你在Service上专门为此做一个或那个IntentService