如何在Android应用程序中只运行一次线程?

时间:2015-10-10 22:48:27

标签: java android-studio

也许这是一个愚蠢的问题,我对android studio没有多少经验。对不起。

在我的应用程序中,我有很多代表页面的活动。在MainActivity中,我创建了一个总是侦听某些东西的线程(它保持循环)。但每当我返回MainActivity页面时,它都会创建另一个线程。如果我只想运行一次,有什么办法呢?

我在考虑是否可以使用静态变量来计算客户端运行的次数,并且如果已经存在,则阻止它创建另一个。

public class MainActivity extends AppCompatActivity {

    private Thread client;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        client = new Thread(new CheckForOrders());
        client.start();
    .
    .
    }

2 个答案:

答案 0 :(得分:1)

线程在任何情况下都只能运行一次。可能发生的是,每次销毁活动并在配置更改时重新创建(最常见的配置更改是设备轮换)时,您将创建线程的新副本

如果要在活动实例之间保留后台线程,则有两个选项:

  1. 如果您希望它在不同活动之间生存或没有活动正在运行,请将其放在Service
  2. 如果您只需要它来更改配置,请将其保留在保留的Fragment

答案 1 :(得分:0)

由于你只想要一个Thread实例,你可以将它声明为静态的东西:

private static Thread client = new Thread(new checkForOrders());