簡體   English   中英

如何避免在雙核處理器中運行單個應用程序2次

[英]How to avoid running single application 2 times in dual core processor

我在線程中創建了小型應用程序,當我在單核中運行該應用程序時,它可以完美運行。

多核(雙核)中的同一應用程序以不同的PID號運行兩次。 使用和不使用for循環的結果都是相同的。

請幫助避免兩次運行應用程序。 這是一段代碼

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

我假設您需要在主要活動開始時啟動兩個線程,但是在程序掛起時這些線程也將保持運行狀態,並且每當程序從后台恢復時,又有兩個線程被無意中啟動了。

如果應用程序只是從凍結狀態重新啟動,Android也會調用onCreate()方法。 您需要一種方法來知道您的兩個后台線程是否已經在運行,如果這樣,則不要第二次啟動它們。

跟蹤這些啟動過程的一種可能方法是將創建的線程分配給主活動中的靜態字段。 在創建時,您應該能夠檢查線程字段是否不為空以及線程是否處於活動狀態。

onCreate帶有一個參數(捆綁),您可以在其中查找存儲狀態。 但是,如果應用程序確實已被掛起並卸載了類,則您的兩個線程可能不會停止(除非在這種情況下不能這樣做)。 因此,我不確定是否將像“線程已啟動”這樣的布爾值存儲在此捆綁包中,然后再依賴於它們是否好。

更好的辦法是在onStop()上停止這些線程,然后在onStart()上啟動它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM