首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免在双核处理器中运行单个应用程序2次

如何避免在双核处理器中运行单个应用程序2次
EN

Stack Overflow用户
提问于 2012-12-24 16:26:58
回答 1查看 270关注 0票数 0

我创建了一个带有线程的小应用程序,当我在单核上运行这个应用程序时,它工作得很好。

同一应用程序在多核(双核)中运行两次,并使用不同的PID编号。使用和不使用for循环的结果是相同的。

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

代码语言:javascript
复制
for (int i = 0; i < System.Environment.ProcessorCount; i++)
{
    Thread thCurrent = new Thread(sampleMethod);                        
     thCurrent.Start();
     thSubThreads.Add(thCurrent);
} 
EN

回答 1

Stack Overflow用户

发布于 2012-12-24 17:09:15

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

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

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

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

更好的做法是在onStop()上停止这些线程,然后在onStart()上启动它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14018940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档