【问题标题】:Name the Thread of an AsyncTask命名 AsyncTask 的线程
【发布时间】:2011-12-02 19:22:16
【问题描述】:

是否可以为 AsyncTask 的后台线程命名,就像 Java 中的普通线程一样:

Thread(Runnable target, String name) 

我看过AsyncTask的代码,默认构造函数只是默认给一个名字

private static final ThreadFactory sThreadFactory = new ThreadFactory() {
    private final AtomicInteger mCount = new AtomicInteger(1);

    public Thread newThread(Runnable r) {
        return new Thread(r, "AsyncTask #" + mCount.getAndIncrement());
    }
};

我想这样做,因为当我调试时我想知道哪个 Asynctask 正在访问辅助类中的方法。

【问题讨论】:

  • 什么意思,不能扩展?您必须扩展 AsyncTask 才能使用它。为什么不直接扩展默认构造函数,并添加一个您在构造函数中设置的私有成员“名称”?

标签: java android android-asynctask


【解决方案1】:

尝试从doInBackground() 内部调用它:

Thread.currentThread().setName("some custom name");

【讨论】:

    【解决方案2】:

    为什么不能扩展我不明白的AsyncTask。

    我用调试器将我的 AsyncTask 扩展一千次,告诉我哪个 AsyncTask 很糟糕。

    public class MyAsyncTask extends AsyncTask<Void, Void, Void>{
    }
    

    像这样

    【讨论】:

    • 如果我想扩展类我必须实现 doInBackground 方法,名字呢?这不在默认构造函数中。
    • 然后创建你的 MyAsyncTask 构造器。当你创建 AysncTask 时,你使用 new MyAsyncTask(String name) 来初始化你的 asyncTask。而且我仍然不明白您所说的 AsyncTask 名称是什么意思
    • 我的意思是向类添加一个参数,即异步任务的名称。作为我问题的第一条评论。我的想法是在创建新线程时添加名称“AsyncTask #”+ mCount.getAndIncrement() + name);例如。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-14
    • 2016-04-18
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    相关资源
    最近更新 更多