Почему Android Studio Profiler не показывает активность в потоках AsyncTask - PullRequest
1 голос
/ 29 марта 2019

У меня есть два потока AsyncTask, каждый из которых перемещает файлы из одной папки в другую, однако это действие не отображается на Android Studio Profiler

Честно говоря, полностью теряется, так как время от времени будет отображать активность в течение 200 мс, но толькоодин раз и в одном из потоков

В MainActivity:

    new AsyncThread().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,  true);
    new AsyncThread().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,  false);

AsyncTask:

protected Void doInBackground(Boolean... Upper) {
    while(startPoint <= (endPoint)){
       ...

        try {
            if (sourceFile.exists()) {
                try{
                    sourceFile.renameTo(targetLocation);
                    publishProgress();
                    startPoint++;
                } catch(Exception e){
                    System.out.println("Error");
                }
            } else {
            }
        } catch (NullPointerException e) {
            e.printStackTrace();
            Log.i("failed: ", "nullPointer");
        } catch (Exception e) {
            e.printStackTrace();
            Log.i("failed: ", "exception e");
        }
        try {Thread.currentThread().sleep((int)(1000));
       } catch (InterruptedException e) {}
    }

    return null;
}
@Override
protected void onProgressUpdate(Void... progress) {
    try{
        MainActivity.semaphore.acquire();
        MainActivity.noOfFilesTransfered++;
        MainActivity.semaphore.release();
    } catch(Exception e){}
}

1 Ответ

0 голосов
/ 19 мая 2019

Потоки с sleep() -ing не показывают активность на профилировщике, потому что они не запущены. Ваши темы проводят большую часть своего времени во сне.

Не сразу ясно, что представляет собой 200 мс активности, но вы можете быть уверены, что ваш профилировщик верен и что 200 мс представляет поток, который активно работает.

...