我在java方面经验不多,但据我所知,Runnable只是一个接口,它将强制类用一些代码实现run()函数,这些代码将在调用线程中执行。
我经常喜欢在这样的函数中使用这个功能:
public static void sleepAndRunOnUiThread(int millis,@NonNull Runnable action,@NonNull Activity activity) {
Log.e(TAG, "sleepAndRunOnUiThread: recieved millis="+millis);
Log.e(TAG, "sleepAndRunOnUiThread: recieved Runnable action="+action.toString());
new Thread(() -> {
try {
Thread.sleep(millis);
activity.runOnUiThread(action);
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
}一个简单的函数,可以用来在延迟后运行ui线程上的内容。但是有没有一种方法可以在给定的可运行action中打印代码行?
发布于 2020-04-09 20:39:43
正如@CommonsWare所说,我们不能只打印源代码。是的,我现在传递一个IllegalStateException实例,用于识别调用类(某种程度上是黑客,但有效)
public static void sleepAndRunOnUiThread(int millis,@NonNull Runnable action,Exception eCaller,@NonNull Activity activity) {
Log.e(TAG, "sleepAndRunOnUiThread: recieved millis="+millis);
Log.e(TAG, "sleepAndRunOnUiThread: recieved Runnable action from ="+eCaller.getMessage()); // i pass description of action here
new Thread(() -> {
try {
Thread.sleep(millis);
activity.runOnUiThread(action);
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
}https://stackoverflow.com/questions/60131571
复制相似问题