我有两个 AsyncTask 线程,每个线程将文件从一个文件夹移动到另一个文件夹,但此 Activity 未显示在 Android Studio Profiler 上
老实说完全迷失了,因为它时不时地会显示 200 毫秒的 Activity ,但仅在其中一个线程上显示一次
在主 Activity 中:
new AsyncThread().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, true);
new AsyncThread().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, false);
异步任务:
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){}
}
sleep()
的线程不会在分析器上显示 Activity ,因为它们没有运行。您的线程大部分时间都在 sleep 。
目前尚不清楚 200 毫秒的 Activity 代表什么,但您可以放心,您的探查器是正确的,并且 200 毫秒代表正在积极运行的线程。
我是一名优秀的程序员,十分优秀!