首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >记录runnable实例

记录runnable实例
EN

Stack Overflow用户
提问于 2020-02-08 21:57:25
回答 1查看 537关注 0票数 0

我在java方面经验不多,但据我所知,Runnable只是一个接口,它将强制类用一些代码实现run()函数,这些代码将在调用线程中执行。

我经常喜欢在这样的函数中使用这个功能:

代码语言:javascript
复制
 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中打印代码行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-09 20:39:43

正如@CommonsWare所说,我们不能只打印源代码。是的,我现在传递一个IllegalStateException实例,用于识别调用类(某种程度上是黑客,但有效)

代码语言:javascript
复制
 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();

    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60131571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档