【问题标题】:Persistent services/thread in androidandroid中的持久服务/线程
【发布时间】:2011-04-28 21:42:00
【问题描述】:

我最近才开始使用 android 框架,正在寻找可用于以下情况的建议/设计模式:

应用程序是一个服务器/客户端结构。服务器应始终运行(或至少在终止后不久重新创建),但客户端可以根据需要关闭。为了完成服务器,我知道我想扩展 Service 并使用 START_STICKY 功能并在后台运行它。

我有点不知道如何继续的部分是我想在服务器内创建几个持久的网络连接。重要的是连接是线程化的并且可以异步运行。很多文档都指向为此使用AsyncTask,但我根本不需要从网络线程中引用 UI 线程,并且连接永远不会被终止,所以我希望有人能指出我更好方向?

我的概念想法是让网络线程绑定到服务以存储事件,然后客户端也可以绑定到服务以检索事件。我不确定用于这些网络线程的结构。

【问题讨论】:

    标签: android multithreading service network-programming


    【解决方案1】:

    服务器应该一直在运行

    很少有应用程序需要这个。从统计学上讲,您的可能不是其中之一。用户使用任务杀手等攻击像您这样的人,并在市场上给予一星评级以损害他们对设备的使用。我强烈建议您重新考虑这个设计决定。

    所以我希望有人能给我指出一个更好的方向?

    普通的旧普通 Java 线程就可以了。根据线程的性质,您可能会考虑使用线程池。这部分与其他 Java 环境没有显着差异。请记住,当今绝大多数 Android 设备都是单核的,而且您只有这么多的堆空间(只有 16MB),因此拥有大量线程并不是很好。

    我的概念想法是让网络线程绑定到服务以存储事件

    网络线程是服务的一部分,因此不需要绑定到它。

    【讨论】:

    • 应用程序的本质是它始终需要网络连接,或者它是无关紧要的。可能不会有大量线程(1-10),它们是否被服务杀死?
    • @Ian Elliott:不,他们不会被服务杀死。您需要关闭它们,否则它们会在 Android 终止进程时消失。不要从您的服务中泄漏线程。我再说一遍:不要从你的服务中泄漏线程。
    猜你喜欢
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 2017-10-09
    • 2015-06-11
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    相关资源
    最近更新 更多