【问题标题】:Naming AsyncTask for profiling in Android [duplicate]为 Android 中的分析命名 AsyncTask [重复]
【发布时间】:2012-01-16 18:08:30
【问题描述】:

有没有办法在 Android 中命名 AsyncTasks 以进行分析?截至目前,AsyncTasks 仅在分析器中显示为

[N] AsyncTask #1
[M] AsyncTask #2
[K] AsyncTask #3
[L] AsyncTask #4
etc...

我想做的是能够以某种方式命名它们,以便在跟踪文件中轻松识别它们。

【问题讨论】:

    标签: android profiling android-asynctask


    【解决方案1】:

    您可以从线程中运行的代码重命名当前线程。例如,在 doInBackground() 函数中添加下一个代码:

    String oldName = Thread.currentThread().getName();
    Thread.currentThread().setName("MY-ASYNC");
    ...   
    <your code here>
    ...
    Thread.currentThread().setName(oldName);
    

    【讨论】:

    • 我喜欢的另一个技巧是扩展 AsyncTask 来为后台任务创建自己的抽象基础,并且在 doInBackground() 中您可以执行类似 Thread.currentThread().setName(this.class.getSimpleName( ));这将为子类正确翻译。
    • 为什么要在最后调用 setName(oldName) ?
    • @aleb,因为异步任务使用池,我们希望在任务完成后保留线程的原始名称。这样,您就不会因为看到线程“ASYNC-TASK-X”正在运行完全不同的东西而感到困惑,因为线程在名称“泄露”时被池重用。
    • +1 用于设置旧名称
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 2010-11-26
    • 1970-01-01
    相关资源
    最近更新 更多