我想在两行代码之间暂停一下,让我解释一下:
- >用户单击一个按钮(实际上是一张卡片),我通过更改此按钮的背景来显示它:
thisbutton.setBackgroundResource(R.drawable.icon);
Run Code Online (Sandbox Code Playgroud)
- >让我们说1秒后,我需要通过改变它的背景来回到按钮的先前状态:
thisbutton.setBackgroundResource(R.drawable.defaultcard);
Run Code Online (Sandbox Code Playgroud)
- >我试图在这两行代码之间暂停线程:
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用.也许这是我需要暂停的过程而不是线程?
我也尝试过(但它不起作用):
new Reminder(5);
Run Code Online (Sandbox Code Playgroud)
有了这个:
public class Reminder {
Timer timer;
public Reminder(int seconds) {
timer = new Timer();
timer.schedule(new RemindTask(), seconds*1000);
}
class RemindTask extends TimerTask {
public void run() {
System.out.format("Time's up!%n");
timer.cancel(); //Terminate the timer thread
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何暂停/休眠线程或进程?
有谁知道如何将代码片段添加到android工作室?我没有找到菜单条目或类似的东西.
我也知道是否可以更改现有的片段?
每当我运行cam_thread时,我都会收到错误"app pass NULL surface".这个代码据说可以在HTC Incredible 1上运行.我已经稍微重新配置它以在机器人x上运行.但是我仍然遇到这个错误.
public class Android_Activity extends Activity
{
Main_thread simulator;
ToggleButton togglebutton;
EditText ip_text;
SensorManager sm = null;
SurfaceView view;
Sensors_thread the_sensors=null;
String IP_address;
Android_Activity the_app;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
view = new SurfaceView(this);
sm = (SensorManager) getSystemService(SENSOR_SERVICE);
ip_text = (EditText) findViewById(R.id.IP_edit_txt);
togglebutton = (ToggleButton) findViewById(R.id.CameraButton);
togglebutton.setOnClickListener(new btn_listener());
the_app = this;
}
@Override
protected void onResume()
{
super.onResume();
}
protected void onStop()
{
super.onStop();
simulator.stop_simu();
this.finish();
}
private class btn_listener implements OnClickListener …Run Code Online (Sandbox Code Playgroud) 有时我们需要在代码运行之前延迟它.
这是可以通过Handler.postDelayed(Runnable)或CountdownTimer.
哪一个在性能方面更好?
请参阅下面的示例代码
处理器
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//DO SOMETHING
}
}, 1000);
Run Code Online (Sandbox Code Playgroud)
倒计时器
new CountDownTimer(1000, 1000) {
public void onFinish() {
//DO SOMETHING
}
public void onTick(long millisUntilFinished) {}
}.start();
Run Code Online (Sandbox Code Playgroud) 我希望在我的java(Android)程序中每2秒钟后连续生成一个随机数至少10分钟.但我只想暂停/延迟只在一种方法中执行代码而不是整个程序.
我试过像这样使用Thread -
boolean stop = false;
int random_number = 0;
while(true){
if(stop){ //if stop becomes true, then
return; //terminate the method
}
random_number = Math.random(); //generate random number
//which is used bu some other
//part of code
try {
Thread.sleep(2000); //delay the code for 2 secs
} catch(InterruptedException ex) { //and handle the exceptions
Thread.currentThread().interrupt();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用 Thread.sleep停止整个程序执行而只是停止执行代码内部方法,我的整个屏幕变为空白.
我也试过使用,Handler但它不起作用,因为它不会停止我的方法中的代码执行,而只是堆叠.
这将证明它的工作更好 -
while(true){
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() …Run Code Online (Sandbox Code Playgroud) 我想延迟几秒钟并显示 Toast,我尝试 SystemClock.sleep
但它只显示最后一条消息(“10s”)...
Toast.makeText(MainActivity.this,"1s", Toast.LENGTH_SHORT).show();
SystemClock.sleep(5000);
Toast.makeText(MainActivity.this,"5s", Toast.LENGTH_SHORT).show();
SystemClock.sleep(5000);
Toast.makeText(MainActivity.this,"10s", Toast.LENGTH_SHORT).show();
Run Code Online (Sandbox Code Playgroud)
那应该是按顺序显示1s、5s、10s吧?
我也参考了这个做法,但是无法实现... android中如何设置延迟?
那么问题出在哪里呢?
android ×6
delay ×2
camera ×1
java ×1
jdk1.6 ×1
performance ×1
process ×1
robot ×1
surfaceview ×1
system-clock ×1