标签: runnable

可以run()返回对象吗?

假设这是场景:

class A extends TimerTask{
  int a;
  public void run(){
    //operation to be performed periodically
  }
}
Run Code Online (Sandbox Code Playgroud)

class B{
  int delay=2000,interval=3000;
  A objectA;
  public static void main(String[] args){
    Timer t=new Timer();
    t.scheduleAtFixedRate(new A(),delay,interval);
  }
}
Run Code Online (Sandbox Code Playgroud)

无法run()归还物品?如果我做出这样的改变,就会引用不兼容性.为什么?

java runnable timertask

2
推荐指数
1
解决办法
3624
查看次数

当系统时钟改变分钟时采取行动?

我的 Android 应用程序TextView告诉用户数据年龄(“13 分钟前”)。我目前每秒更新一次,使用 aRunnable来捕捉当分钟更改notifyDataSetChanged()为我的适配器时。但这会导致每秒垃圾收集...

TextView当系统时钟每分钟发生变化时,是否有另一种方法来触发更新(或采取一般措施),而无需每秒检查此类变化?

android runnable

2
推荐指数
2
解决办法
1835
查看次数

如何在postDelayed模式下停止处理程序?

如果不再计算Handler的计数器怎么能停止?也许你可以告诉我如何处理下面的代码.

 public void handler() {
    nHandler.postDelayed(new Runnable() {
        @Override
        public void run() {

                viewFlipper.setDisplayedChild(8);
        }
    }, 20000);
}
Run Code Online (Sandbox Code Playgroud)

android handler runnable

2
推荐指数
1
解决办法
5160
查看次数

Android报告媒体播放器currentposition到progressbar或其他什么

在我的情况下,我想流式传输音频并在简单的ProgressBar上显示其进度,我找不到用于播放进度的事件处理程序,我在互联网上发现的是我可以制作一个Runnable并在play()上将其激活为如下

public void fireRunnable()
{
    Runnable runnable = new Runnable()
    {
        @Override
        public void run()
        {
            int duration = mediaPlayer.getDuration();
            while( mediaPlayer.isPlaying() )
            {
                Log.v("", mediaPlayer.getCurrentPosition()+"");
            }
        }
    };
    runnable.run();
}
Run Code Online (Sandbox Code Playgroud)

在onPrepared()中播放后立即调用它

@Override
public void onPrepared(MediaPlayer arg0)
{
    arg0.start();
    fireRunnable();
}
Run Code Online (Sandbox Code Playgroud)

现在这首歌开始没有音频和应用程序崩溃在5秒后,这是一个很好的方法,如果是的话我怎么能让它工作?或者我没有其他选择?
帮助将不胜感激.

android runnable android-mediaplayer

2
推荐指数
1
解决办法
6402
查看次数

如何停止java 8 lambda-runnable-thread

我想停止这个帖子:

Runnable run= ()->{while(true)[...];};
run.run();
Run Code Online (Sandbox Code Playgroud)

但是没有run.stop()办法.

请建议另一个尽可能短的方法来启动和停止一个线程或一个方法来停止这个运行...的事情.

java multithreading runnable

2
推荐指数
1
解决办法
2583
查看次数

android处理程序removeCallbacks不起作用

我用runnable旋转图像.我想旋转图像例如第4次然后暂停/停止rotate.i写了一些函数

public void rotateImage(final View myView, final int size) {

    runnable = new Runnable() {

        @Override
        public void run() {

            count++;
            myView.setRotation(myView.getRotation() + size);
            if (count ==3) {
                myHandler.removeCallbacks(runnable);
            }

            myHandler.postDelayed(this, 100);
            // 1000 means 1 second duration
        }
    };
    myHandler.postDelayed(runnable, 100); 

}
Run Code Online (Sandbox Code Playgroud)

我可以旋转图像,但我不能停止/暂停旋转.removeCallbacks目前不工作我的代码有什么问题,如果有人知道解决方案,请帮助我

android runnable android-handler

2
推荐指数
1
解决办法
3795
查看次数

当两个(!)实际生成一个新线程时,在新线程上调用run()和start()之间的区别究竟是什么?

所以,这个问题在之前(这里这里)得到了回答,答案对我来说完全有意义:

run()只调用对象的run()方法Thread,但不产生新的线程.因此,run()方法中的代码实际上是在调用它的同一个线程上执行的. start()另一方面,将线程实例移交给调度程序并调用run()它,因此它生成一个新线程,在该线程run()执行方法的代码.

但是,我正在努力真正理解这是什么意思,所以我开发了一个案例来验证语句:

public class Test extends Thread{

    public void run() {
        System.out.println("run() called on thread: " + getName());
    }

    public static void main(String[] args) throws Exception {
        System.out.println("main() called on thread: " + Thread.currentThread().getName());
        Test t = new Test();
        t.start(); // OR t.run();
    }
}
Run Code Online (Sandbox Code Playgroud)

所以,如果上面的描述是真的,那么程序的输出应该是如果我t.run()用来执行print语句,那么线程的名称应该是相同的,因为不应该创建新的线程并且t它只是在与它相同的线程上运行是创建于.另一方面,t.start()实际上应该给我两个不同的线程名称.

但是,在这两种情况下我都得到输出:

main() …
Run Code Online (Sandbox Code Playgroud)

java concurrency multithreading runnable

2
推荐指数
2
解决办法
147
查看次数

如何从处理程序中删除未分配给变量的Runnable

我启动了一个runnnable但没有将它分配给变量.我怎么阻止它?我知道它是removeCallbacksAndMessages()方法的组合,但由于我创建了一个匿名的runnable,我不知道传入此方法的参数:

mStartButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            h = new Handler();
            final int delay = 1000; //milliseconds

            h.postDelayed(new Runnable() {
                public void run() {
                    mUpdateRef.addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {
                            int mNumberOfPollsForCurrentDay = (int) dataSnapshot.getChildrenCount();
                            Random r = new Random();
                            int randomPollInRangeOfCurrentDayNumberOfPolls = r.nextInt((mNumberOfPollsForCurrentDay + 1) - 1) + 1;
                            int numberOfPollAnswersAtRandomNumber = (int) dataSnapshot.child(String.valueOf(randomPollInRangeOfCurrentDayNumberOfPolls)).child(POLL_ANSWERS_LABEL).getChildrenCount();
                            Random rr = new Random();
                            int randomAnswerBasedFromRandomPollAnswerChoices = rr.nextInt((numberOfPollAnswersAtRandomNumber + 1) - 1) + 1;
                            mUpdateRef.child(String.valueOf(randomPollInRangeOfCurrentDayNumberOfPolls)).child(POLL_ANSWERS_LABEL).child(String.valueOf(randomAnswerBasedFromRandomPollAnswerChoices)).child("Vote_Count").runTransaction(new Transaction.Handler() {
                                @Override …
Run Code Online (Sandbox Code Playgroud)

java android handler runnable

2
推荐指数
1
解决办法
113
查看次数

Java"null"值从未分配给我的Runnable

所以我有这个代码:

    for(Runnable loadTask : mMeshLoadMap.values())
    {
        if(loadTask != null)
        {
            loadTask.run();
            loadTask = null;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我的问题是loadTask = null语句永远不会执行,Android Studio说"分配给loadTask的值"null"永远不会被使用"......

另外,当我在该行设置断点时,调试器永远不会到达它.它可以达到loadTask.run()但不是loadTask = null 我确信这loadTask.run()不会阻止太长时间

java null runnable

2
推荐指数
1
解决办法
267
查看次数

我的僵尸不会发现自己.

听起来非常哲学不是吗?

无论如何,我有一个相当复杂的问题.

我的main_activity类收集了所有僵尸,如下所示:

//Testing Runnable (used to compare the first zombie with the player)
private Runnable updateLocations = new Runnable(){
    @Override
    public void run(){
        try {
            while(true) {
                image_player.getLocationInWindow(pLoc);
                Zombie zoms = zombieCollection.next();
                if(!zoms.equals(null)){
                    zoms.getZombieImage().getLocationInWindow(zLoc);
                }
                System.out.println("Zombie: x = " + zLoc[0] + "; y = " + zLoc[1]);
                System.out.println("Player: x = " + pLoc[0] + "; y = " + pLoc[1]);
                Thread.sleep(500);
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

我的僵尸类收集信息如下:

public class Zombie{

float X, Y; …
Run Code Online (Sandbox Code Playgroud)

java android imageview runnable

2
推荐指数
1
解决办法
412
查看次数