【问题标题】:Alternatives to AsyncTask for extensive sending of data to PC/ServerAsyncTask 的替代方案,用于将数据广泛发送到 PC/服务器
【发布时间】:2015-08-29 18:39:39
【问题描述】:

我编写的 Android 应用程序使用 AsyncTask 将小块数据广泛发送到 PC/服务器。有用。但是,如果我旋转我的设备,我最终会得到悬空的异步任务,并且由于某种原因甚至没有启动新的异步任务(我是 Java/android 开发的新手)。

我在 onCreate 期间执行我的异步任务。 问题 1:为什么设备轮换后第二次异步任务没有启动?

我已经了解到 AsyncTask 不适合我的后台任务,它主要用于短期任务。 问题 2:但是如果我想让后台任务: 1. 建立连接(打开 Socket!) 2. 等待来自用户的数据(数据由用户通过与UI)并立即发送数据(并且数据块非常小)。我需要避免输入滞后,因此解决方案必须轻巧高效。

由于我是新手,我不想使用任何外部库...

【问题讨论】:

    标签: android multithreading


    【解决方案1】:

    使用 IntentService 作为替代方案或创建服务的子类以进行长时间操作。 它比 AsyncTasks 有很多好处,可以多次调用。 虽然它不直接与 UI 交互,但在 BroadcastReceiver 的帮助下,你被覆盖了。

    在这里阅读更多;

    https://developer.android.com/training/run-background-service/create-service.html

    【讨论】:

    • 我已经看到它并试图用它重新实现我的代码。但是,我担心性能会太差。让我们来看看。谢谢!
    • IntentService 没有帮助,因为每次提供意图时它都会被销毁。但是我需要创建套接字并使其保持活动状态,同时从 UI 发送数据。尝试过服务,但它在主 UI 线程上调用...
    • 提出正确的问题有助于获得正确的答案。您的问题中没有包含套接字,因此我建议您更新您的问题。
    • 您是否在 Manifest 中声明了您的服务?如果是,那么您遇到了什么错误?
    • 我在最初的问题中提到,我希望这个后台任务/线程/服务/任何东西来设置连接(通过套接字)并发送在 UI 中生成的数据(如果没有可用的数据,线程应该等待)。
    猜你喜欢
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 2020-12-27
    • 1970-01-01
    • 2020-10-26
    相关资源
    最近更新 更多