标签: postdelayed

取消handler.postdelayed进程

我正在使用handler.postDelayed()我的应用程序的下一个阶段之前创建一个等待期.在等待期间,我显示一个带有进度条和取消按钮的对话框.

我的问题是我找不到在时间流逝之前取消postDelayed任务的方法.

android postdelayed android-handler

247
推荐指数
3
解决办法
9万
查看次数

停止handler.postDelayed()

我通过新的Handler()调用多个处理程序.postDelayed(new Runnable().....如果单击返回按钮,我怎么能阻止它?

public class MyActivity extends AppCompatActivity implements OnClickListener {

    private Button btn;
    private Handler handler;
    private Runnable myRunnable;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); 
        btn = (Button) findViewById(R.id.trainingsstart);
        btn.setOnClickListener(this);   
    }

    @Override
    public void onClick(View v) {
        Handler handler =  new Handler();
        Runnable myRunnable = new Runnable() {
            public void run() {
                // Things to be done
            }
        };

        handler.postDelayed(myRunnable, 3000);
    }

    @Override 
    public void onBackPressed() { 
        super.onBackPressed();
        handler.removeCallbacks(myRunnable);
    }   
}
Run Code Online (Sandbox Code Playgroud)

我有一个问题,我的处理程序没有像"myHandler"这样的名字.我该怎么处理?感谢帮助!

现在我收到了这些错误:

03-28 17:47:03.662: E/AndroidRuntime(1961): FATAL EXCEPTION: main …
Run Code Online (Sandbox Code Playgroud)

android handler postdelayed android-handler

94
推荐指数
3
解决办法
8万
查看次数

如何从postDelayed添加的处理程序对象中删除runnable?

我有一个"开放"的动画,Handler.postDelayed(Runnable, delay)用于在短暂延迟后触发"关闭"动画.但是,在打开和关闭之间的时间内,可能会有一个由点击触发的动画.

我的问题是,如何取消处理程序中的"关闭"动画?

android handler runnable postdelayed

65
推荐指数
4
解决办法
5万
查看次数

Android - 使用postDelayed()调用定期运行方法

我有一个Android应用程序的情况,我想开始一个应该每秒运行的网络活动(发送一些数据).我实现如下:

onCreate()我有代码:

tv = new TextView(this);
tv.postDelayed(sendData, 1000);
Run Code Online (Sandbox Code Playgroud)

sendData()函数:

   Handler handler = new Handler();
   private Runnable sendData=new Runnable(){
    public void run(){
        try {
            //prepare and send the data here..
            handler.removeCallbacks(sendData);
            handler.postDelayed(sendData, 1000);    
        }
        catch (Exception e) {
            e.printStackTrace();
        }   
    }
};
Run Code Online (Sandbox Code Playgroud)

问题是这样的:当用户按下后退按钮并且应用程序出现(UI消失)时,该sendData()功能仍然会被执行,这就是我想要的.现在,当用户重新启动应用程序时,我onCreate()再次被sendData()调用,并且每秒调用两次.它继续这样下去.每当用户出来并重新开始时,sendData()每秒钟就会发生一次.

我究竟做错了什么?这是我的new Handler()创造问题吗?处理这个问题的最佳方法是什么?sendData()在用户退出应用程序(表单应用程序管理器)之前,我希望每秒调用一次.

android postdelayed

45
推荐指数
4
解决办法
15万
查看次数

如何在android studio中正确使用postDelayed()?

我有一个countDownTimer,如果用户在第12秒内没有点击gameButton我想要调用gameOver方法.问题当countDownTimer为12或者计时器只是不断倒计时,我或者得到名为instamtly的游戏功能.所以我试图使用postDelayed()方法给用户一个完整的秒来点击按钮并让countDownTimer继续,但正如我的代码现在,游戏停在12无论如何.

import android.app.Activity;
import android.os.CountDownTimer;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;



public class GameScreen extends Activity {

    private TextView time;
    private Button start;
    private Button cancel;
    private Button gameButton;
    private CountDownTimer countDownTimer;
    public static int count = 0;
    public static int countFail = 0;

    final Handler handler = new Handler();
    final Runnable r = new Runnable() {
        public void run() {
            handler.postDelayed(this, 1000);
            gameOver();
        }
    };


    private View.OnClickListener btnClickListener = new View.OnClickListener(){ …
Run Code Online (Sandbox Code Playgroud)

android handler postdelayed android-handler

23
推荐指数
3
解决办法
4万
查看次数

使用Runnable和postDelayed更新UI不使用计时器应用程序

我已经看过每一个讨论和我可以找到的关于让它工作的线程,但事实并非如此.我有一个更新文本视图的简单计时器(下例中的mTimeTextField).正在正确执行mUpdateTimeTask运行方法(每秒),但UI /文本字段未更新.

我有基于以下信息的代码:

http://android-developers.blogspot.com/2007/11/stitch-in-time.html http://developer.android.com/resources/articles/timed-ui-updates.html

这是代码:

package com.something.handlertest;

import com.something.handlertest.R;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.SystemClock;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class Test extends Activity {

    private Handler mHandler = new Handler(); 
    private int labelNo    = 0;
    private long currTime  = 0L;
    private long mStartTime = 0L;
    TextView mTimeTextField;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mTimeTextField = (TextView)findViewById(R.id.timeTextFieldl);

        Button startButton = (Button)findViewById(R.id.start_button);
        startButton.setOnClickListener(new …
Run Code Online (Sandbox Code Playgroud)

multithreading android timer handler postdelayed

22
推荐指数
3
解决办法
5万
查看次数

如何延迟执行android

我正在构建一个具有AI功能的Android棋盘游戏.AI转向并且必须调用一系列操作,之后它会向我的自定义视图发布无效更新.

我需要减慢这些动作,以便用户看到AI轮到而不是闪烁.

我试过这些方面的东西

    try {
        doFirstThing();
        Thread.sleep(500)
        //post invalidate

        doNextThing();
        Thread.sleep(1000)
        //post invalidate
     }
     catch (Exception e) {
     }
Run Code Online (Sandbox Code Playgroud)

然而,这绝对没有效果.如果这不明显,这也是在一个单独的线程中运行.

什么是我最好的选择我看过处理程序,但他们不需要正确,因为我需要按顺序执行一系列任务每次更新视图.

multithreading android postdelayed

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

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万
查看次数

计算布局后如何获得Android小部件的大小?

我有一个布局,指定相对维度的小部件大小,例如:

<LinearLayout ... layout_height="fill_parent">
     <ImageView ... layout_height="wrap_content" />
     <TextView ... layout_height="120dp" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

紧接着onCreate,我想知道ImageView的高度是多少.怎么做?

注:如果我打电话getHeight()onCreate,我得到0.

我也试过imageView.postDelayed,它适用于2.1模拟器但在1.5模拟器上失败(我也得到0).

最后,我尝试创建一个Handler,然后我handler.postDelayed用10毫秒的延迟调用.它适用于2.1和1.5模拟器,但是当我在eclipse调试器中启动程序时失败(因此,我得出结论,使用延迟并不能保证在imageview布局后获得高度.)

layout android handler postdelayed android-linearlayout

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

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

我正在使用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
查看次数