标签: handler

如何在到达处理程序之前删除延迟的消息?

我的问题是我需要发送延迟1秒的消息.处理程序然后启动一些操作,你得到了图片.

但是仍然存在一些条件,其中应该删除已经发送的消息(在第二次过去之前)以防止处理程序做任何事情.我无法弄清楚如何做到这一点(或者如果它甚至可能),所以如果你们中的任何人都有线索,请告诉我.

android messages handler

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

Android,暂停和恢复处理程序回调

我有一个处理程序,我使用如下:

handler.postDelayed(Play, 1000);
Run Code Online (Sandbox Code Playgroud)

当我的应用程序onPause()在完成之前被调用时,我需要暂停它并告诉它不要执行"postDelayed"直到我恢复.

这是可能的,还是有另一种方式?

我的问题是,当调用onPause()时,我暂停音频(SoundManager),但如果此后调用此handler.postDelayed,音频将不会暂停,并将继续在后台播放我的应用程序.

@Override
public void onPause()
{
  Soundmanager.autoPause()
}
Run Code Online (Sandbox Code Playgroud)

但是1000ms后的postDelayed再次启动音频播放.

android callback handler

12
推荐指数
3
解决办法
2万
查看次数

应用程序崩溃与"从错误的线程异常调用"

我在我的onCreate()方法中添加了这部分代码,它崩溃了我的应用程序.需要帮忙.

logcat的:

android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread 
that created a view hierarchy can touch its views.
Run Code Online (Sandbox Code Playgroud)

码:

final TextView timerDisplayPanel = (TextView) findViewById(R.id.textView2);

    Timer t = new Timer();
    t.schedule(new TimerTask(){
        public void run(){
            timerInt++;
            Log.d("timer", "timer");
            timerDisplayPanel.setText("Time ="+ timerInt +"Sec");
        }
    },10, 1000);
Run Code Online (Sandbox Code Playgroud)

android handler timertask

12
推荐指数
1
解决办法
1万
查看次数

Android:使用处理程序post.delayed两次

我想知道是否可以使用handler().postdelayed两次?

我的意思是,我想创建一个按钮,单击它时会更改颜色并保持此状态1秒,然后,1秒后另一个按钮更改颜色.

我创建了以下代码:

在onclicklistener中:

btn3.setBackgroundColor(Color.WHITE);
  new Handler().postDelayed(new Runnable() {
      @Override
      public void run() {

        checkAnswer();
        waitAnswer();
        btnRsp3.setBackgroundResource(R.drawable.selector); 
      }
    }, 1000);
Run Code Online (Sandbox Code Playgroud)

检查答案:

 public void CheckAnswer(){
      btn1.setBackgroundColor(Color.GREEN);

  new Handler().postDelayed(new Runnable() {
  @Override
  public void run() {
  }
}, 500);

btn1.setBackgroundResource(R.drawable.selector);
}
Run Code Online (Sandbox Code Playgroud)

我认为问题出现在CheckAnswer上,因为它看起来并没有停留在这个postDelayed中并且步入waitAnswer.

谢谢

android delay handler postdelayed

12
推荐指数
1
解决办法
4万
查看次数

postDelayed()在kotlin中使用了什么

据我所知postDelayed()有两个参数runnable和duration delay.在kotlin下面的代码实际上做了什么:

Handler().postDelayed({
            sendMessage(MSG, params.id)
            taskFinished(params, false)
        }, duration)
Run Code Online (Sandbox Code Playgroud)

这里第一个是两个函数调用,第二个是持续时间延迟.哪里可以运行?这对于kotlin来说是不是像lambda?有人请解释一下吗?

android handler kotlin

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

处理程序与线程

我想知道,一劳永逸.我在很多地方读过.当我想做一些"长时间操作"时,我应该使用一个Handler.

但我不明白为什么?所有我的'长时间操作'我用常规线程包围,它工作正常.

我为什么要用Handler它呢?

我必须使用的唯一一次Handler是,当我不得不安排一些任务时(postDelayed)

有什么我想念的主要想法handlers(当我真的应该使用它时)?或者也许没有真正的区别?

android handler

11
推荐指数
1
解决办法
4689
查看次数

ActionBar setBackgroundDrawable()使用Thread/Handler归零背景

我正在尝试从Handler更改ActionBar的背景.最终目标是将Handler传递给AsyncTask,但是现在甚至从Thread调用Handler.sendMessage()会导致奇怪的行为.通过调试器,我能够看到Handler收到Message并随后运行setActionBarBackground()直到结束.

具有蓝色底部笔划的默认ActionBar完全从屏幕上消失,并且不会被新的GradientDrawable替换.我怀疑背景在某种程度上是无效的.此外,当我再次关注EditText时,会出现正确的GradientDrawable ActionBar背景.我期望的行为是对actionDone进行简单更改的背景.

任何关于为什么会发生这种情况的见解将不胜感激!

相关代码:

TestActivity.java

public class TestActivity extends RoboSherlockFragmentActivity {

    @InjectView(R.id.ET_test) EditText testET;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.i(MainApp.TAG, "onCreate");
        setContentView(R.layout.test_activity);

        testET.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) {
                if (i == EditorInfo.IME_ACTION_DONE) {
                    String loc = testET.getText().toString();
                    InputMethodManager mgr = (InputMethodManager) getSystemService(
                            Context.INPUT_METHOD_SERVICE);
                    mgr.hideSoftInputFromWindow(testET.getWindowToken(), 0);
                    Toast.makeText(TestActivity.this, "EditText done!", Toast.LENGTH_SHORT).show();

                    /*TestQuery tq = new TestQuery(TestActivity.this, mHandler);
                    tq.execute();*/
                    new Thread(new Runnable() {
                        public void run() {
                            try {
                                Thread.sleep(1000);
                            } catch (InterruptedException …
Run Code Online (Sandbox Code Playgroud)

android handler actionbarsherlock android-actionbar

11
推荐指数
1
解决办法
6596
查看次数

Robolectric Run Handler帖子

我在Handler使用Robolectric 测试代码时遇到了麻烦.例如:

public class Client {
  private Handler mMainThreadHandler;

  public interface Callback{
    void ok();
  }

  public Client() {
    mMainThreadHandler = new Handler(Looper.getMainLooper());
  }

  public void doSomeStuff(Callback callback){
    //doing...
    mMainThreadHandler.post(new Runnable(){
      @Override public void run() {
        callback.ok();
      }
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

如何Runnable立即运行代码?它在我的测试完成执行之前没有运行.

android handler robolectric

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

如何更改/重置处理程序延迟时间?

我正在使用postDelayed方法,Handler以便在一定时间后执行操作:

private static int time_to_wait = 2000;

Handler handler = new Handler();
handler.postDelayed(new Runnable() {
  public void run() {
    // Make Action
  }
}, time_to_wait);
Run Code Online (Sandbox Code Playgroud)

现在在等待时间的中间我想要更改剩余毫秒的值,因为一些处理结果,让我们说它现在等待1000毫秒,我想让它开始从2000再次计数,所以,我设置time_to_wait值到2000年,但它没有计数,因为它只需要var值(2000),只是等待那个时间,无论将time_to_wait值更改为任何其他值.

android handler postdelayed

11
推荐指数
1
解决办法
9549
查看次数

SKAction完井处理程序; 在Swift中的用法

我是Swift和SpriteKit的新手.很多SpriteKit动作的样本都在Objective C中,我无法在Swift中映射,也无法工作.

如果运行SKAction,并且在SKAction完成后想要做其他事情,我如何在Swift中做到这一点?

    spaceMan.runAction(spaceManDeathAnimation, completion: {
        println("red box has faded out")
    })
Run Code Online (Sandbox Code Playgroud)

任何想法将不胜感激.

编辑:

for i in 0...29 {
    textures.append(SKTexture(imageNamed: "spaceManDeath_\(i)"))
}
spaceManDeathAnimation = SKAction.repeatActionForever(SKAction.animateWithTextures(textures, timePerFrame: 0.15625))
Run Code Online (Sandbox Code Playgroud)

handler sprite-kit skaction swift completion

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