Das anhalten aller threads haben: ms Warnung die Verwendung von Threads - Android

Ich habe 2 Threads, dass einige Netzwerk Berechnung.
Wenn ich meine app und nach dem Start meiner zweiten Thread ich bekommen:

Suspending all threads took: ms
Warnung gefolgt von:

Background sticky concurrent mark sweep GC freed 246745(21MB) AllocSpace objects, 169(6MB) LOS objects, 33% free, 31MB/47MB, paused 1.972ms total 127.267ms Warnung.

Manchmal bekomme ich nur diese 2 Warnungen und andere mal bekomme ich eine Menge von diesen 2 Warnungen, bis ich entscheide, Sie zu beenden Sie die app ausführen. An diesem Punkt, es läuft gerade die wichtigsten Thread und im Grunde nichts zu tun. Hier ist der relevante code:

MainActivity.java:

protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //Getting html page through a thread
    this.getHtmlPageThread = new GetHtmlPageThread(URL_STRING);
    this.getHtmlPageThread.start();

    //The thread that will search the web for data
    this.getDataFromTheWebThread = new GetDataFromTheWebThread();

    //Search button click listener
    searchButton.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            //Get the searched lyrics
            searchedLyrics = inputEditText.getText().toString();

            informUserAboutConnectionToTheNet();

            //Starting to search the web for data through a thread
            getDataFromTheWebThread.start();

            if (!getDataFromTheWebThread.isAlive())
            {
                printMap(MainActivity.matchResultMap);
            }
        }
    }); //End of search button click listener

    printMap(MainActivity.matchResultMap);

} //End of onCreate() method

protected void onStart()
{
    super.onStart();

    if (!this.isParseSucceeded()) //Connection to net failed
    {
        if (!getHtmlPageThread.isAlive()) //If the thread is not alive, start it.
        {
            getHtmlPageThread.start(); //Try to connect again
            this.informUserAboutConnectionToTheNet();
        }
    }
    if (!this.isParseSucceeded())
    {
        super.onStart(); //Call onStart() method
    }

} //End of onStart() method

GetHtmlPageThread.java:

public class GetHtmlPageThread extends Thread
{
    private String url;

    public GetHtmlPageThread(String url)
    {
        this.url = url;
    }

    @Override
    public void run()
    {
        try
        {
            MainActivity.htmlPage.setHtmlDocument(this.getParsedDocument(this.url));
            if (MainActivity.htmlPage.getHtmlDocument() != null)
            {
                MainActivity.parsedSucceeded = true; //Parsed succeeded
            }
            else
            {
                MainActivity.parsedSucceeded = false; //Parsed failed
            }
            Thread.sleep(100);
        }
        catch (InterruptedException e)
        {
            e.printStackTrace();
        }
    }

    /**
     * Returns the document object of the url parameter.
     * If the connection is failed , return null.
     *
     * @param url Url to parse
     * @return The document of the url.
     *
     */
    public Document getParsedDocument(String url)
    {
        try
        {
            return Jsoup.connect(url).get();
        }
        catch (IOException e) //On error
        {
            e.printStackTrace();
        }

        return null; //Failed to connect to the url
    }

}

GetDataFromTheWeb.java:

public class GetDataFromTheWebThread extends Thread
{
    public static boolean isFinished = false; //False - the thread is still running. True - the thread is dead

    @Override
    public void run()
    {
        GetDataFromTheWebThread.isFinished = false;
        try
        {
            this.getLyricsPlanetDotComResults(MainActivity.searchedLyrics); //Method for internet computations
            Thread.sleep(100);
        }
        catch (InterruptedException e)
        {
            e.printStackTrace();
        }
        GetDataFromTheWebThread.isFinished = true;
    }
    ...
}

Grundsätzlich die this.getLyricsPlanetDotComResults(MainActivity.searchedLyrics); Methode in der zweiten Thread ist dabei eine Menge von den internet-arbeiten und Berechnungen im Allgemeinen. Mehr Berechnungen als net-Zeug um genau zu sein.

So, ich glaube, ich habe diese Warnungen, weil der zweite Thread ist viel zu "Beschäftigt"? Oder vielleicht auch nur meine Umsetzung mit dem activity-Lebenszyklus mit der onCreate() Methode und onStart() Methode sind falsch?

Unnötig zu sagen, habe ich nicht den output, den ich will, wenn ich Debuggen Sie die app und trat durch die zweite Thread und es funktioniert Perfekt. Also nochmal, es hat etwas mit meiner Activity's Umsetzung.

InformationsquelleAutor God | 2016-04-15

Schreibe einen Kommentar