0

我创建了带有线程的小型应用程序,当我在单核中运行此应用程序时,它运行良好。

多核(双核)中的相同应用程序以不同的 PID 号运行两次。有无for循环,结果是一样的。

请帮助如何避免两次运行应用程序。这是一段代码

for (int i = 0; i < System.Environment.ProcessorCount; i++)
{
    Thread thCurrent = new Thread(sampleMethod);                        
     thCurrent.Start();
     thSubThreads.Add(thCurrent);
} 
4

1 回答 1

0

我假设您需要在主要活动开始时启动的两个线程,但是当程序挂起时线程也会继续运行,并且每次程序从后台恢复时都会无意中启动另外两个线程。

如果应用程序刚刚从冻结状态重新启动,Android 也会调用onCreate()方法。您需要找到一种方法来了解您的两个后台线程是否已经在运行,如果是,请不要第二次启动它们。

跟踪这些启动进程的一种可能方法是将创建的线程分配给主活动中的静态字段。在创建时,您应该能够检查线程字段是否不为空并且线程是否处于活动状态。

onCreate 接受一个参数(包),您可以在其中查找存储的状态。但是,如果应用程序已真正挂起并卸载了类,则您的两个线程可能不会停止(除非在这种情况下它不能?)。因此,我不确定在此捆绑包中存储诸如“线程已启动”之类的布尔值并稍后依赖它们是否好。

更好的是在 onStop() 上停止这些线程并在 onStart() 上启动它们。

于 2012-12-24T09:09:14.927 回答