我正在进行AOP注入,我希望记录线程的生成关系,例如谁启动了新的异步任务,因此我想在父线程调用android.os.AsyncTask.execute之前获取AsyncTask的线程名称。在AOP的before advice中,我可以获取AsyncTask对象,但似乎asnctask类没有提供公共方法来获取线程名称和线程ID。是否有方法可以在执行之前获取asynctask的线程名称和线程ID呢?
与线程的start方法不同,在开始一个线程之前,我可以使用线程对象调用Thread.getName()和Thread.getId()来获取线程的名称和ID。
与线程的start方法不同,在开始一个线程之前,我可以使用线程对象调用Thread.getName()和Thread.getId()来获取线程的名称和ID。
============更新==============
我已经找到了一种解决方法,在调用android.os.AsyncTask.execute之前,将asyncTask obj ref及其当前线程名称(asynctask的父线程)保存为map的键值对。接着在asyncTask的doInBackground()方法中,调用Thread.currentThread().getName()来获取当前asynctask的线程名称,并使用这个asynctask obj ref作为key来查询上述map,然后我们就可以获取父线程的线程名称,从而可以获得生成关系。