Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 记录runnable的实例_Java_Android - Fatal编程技术网

Java 记录runnable的实例

Java 记录runnable的实例,java,android,Java,Android,我对java没有太多经验,但据我所知,Runnable只是一个接口,它将强制类使用一些代码实现run()函数,这些代码将在调用线程中执行。 我经常喜欢在这样的函数中使用此功能: public static void sleep和runonuithread(整数毫秒,@NonNull可运行操作,@NonNull活动){ Log.e(标签“sleepAndRunOnUiThread:Received millis=“+millis”); Log.e(标记“sleep和runonuithread:re

我对java没有太多经验,但据我所知,
Runnable
只是一个接口,它将强制类使用一些代码实现
run()
函数,这些代码将在调用线程中执行。
我经常喜欢在这样的函数中使用此功能:

public static void sleep和runonuithread(整数毫秒,@NonNull可运行操作,@NonNull活动){
Log.e(标签“sleepAndRunOnUiThread:Received millis=“+millis”);
Log.e(标记“sleep和runonuithread:received Runnable action=“+action.toString());
新线程(()->{
试一试{
睡眠(毫秒);
activity.runOnUiThread(动作);
}捕捉(中断异常e){
e、 printStackTrace();
}
}).start();
}

一个简单的函数,可以用来在延迟后在ui线程上运行东西。但是有没有一种方法可以在给定的runnable
操作中打印代码行呢?

正如@commonware所说,我们不能只按原样打印源代码。是的,我现在正在传递一个
IllegalStateException
的实例,用于识别调用类(有点像黑客,但有效)


public static void sleep和runonuithread(整数毫秒,@NonNull可运行操作,异常eCaller,@NonNull活动){
Log.e(标签“sleepAndRunOnUiThread:Received millis=“+millis”);
Log.e(标记“sleepAndRunOnUiThread:Received Runnable action from=“+eCaller.getMessage());//我在这里传递操作描述
新线程(()->{
试一试{
睡眠(毫秒);
activity.runOnUiThread(动作);
}捕捉(中断异常e){
e、 printStackTrace();
}
}).start();
}

Java是一种编译语言。Java源代码行不在您编译的应用程序中,因此无法打印它们。@Commonware哦,好的,谢谢您提供的信息。是否有其他可能的方法(从上述参数)记录调用此函数的类的详细信息?您可以创建异常的实例(例如,
new IllegalStateException(“ick”)
)。然后可以记录异常,或者访问堆栈跟踪元素并使用它们。请记住,如果您使用ProGuard/D8混淆代码,那么堆栈跟踪也会混淆。您到底需要知道什么以及为什么?@ThorbjørnRavnAndersen上述函数是我的实用程序类的一部分,在不同的时间点被许多其他类调用。我想知道哪个类在我的日志中调用这个函数。一个类名就足够了,我猜我通过活动实例就可以获得这样的信息(目前不在笔记本电脑上,所以无法检查)。起初,我希望在日志中获得
可运行操作的全部代码,但正如Commonware所指出的,这是不可能的