如何在Android上创建在后台运行的线程

时间:2013-10-02 19:18:08

标签: android multithreading sockets background

我在一个活动中有一个带有开放套接字连接的线程,我喜欢使用全局线程,以便我可以从其他活动中的线程获取数据。有人想在背景上跑步......

有没有人为我提供解决方案或示例?

谢谢你。

3 个答案:

答案 0 :(得分:4)

您正在寻找Service

或尝试此代码

void runInBackground() {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    // DO your work here
                    // get the data
                    if (activity_is_not_in_background) {
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                //uddate UI
                            }
                        });
                    }
                    runInBackground();
                }
            });
        }

使用异步任务的第三种方法 - Understanding AsyncTask

答案 1 :(得分:1)

如果你想让多个活动有权访问这个线程,那么我会结合Vaibs_cool运行线程的样本(它只是一个普通的Thread,没有特定于Android的特定内容)然后......

扩展Application(在Manifest中为它创建一个条目)并将该Thread放在那里。

这样你所有的活动都可以与之交谈。

答案 2 :(得分:0)

您有两种选择:

如果要打开套接字并在活动结束后使用Service

,请将其打开

另一方面,如果你想在Activity运行期间打开套接字并在关闭活动时关闭然后使用AsyncTask

您可以找到如何使用AsyncTask here

的示例

来自文档:

  

网络操作可能涉及不可预测的延迟。为防止此操作导致糟糕的用户体验,请始终在UI的单独线程上执行网络操作。 AsyncTask 类提供了从UI线程触发新任务的最简单方法之一。