导航:首页 > 操作系统 > android延时执行

android延时执行

发布时间:2022-10-03 11:32:40

android中开线程延时问题

我想做到的效果是屏幕中画一个圆,然后圆会慢慢变小,当半径变成1时停止变小。然后每触摸一次屏幕圆半径会增大,直到半径到100停止。我把这两个写在了两个线程里,但是目前运行下来触摸屏放大圆可以,但是圆自己慢慢变小却不行。

MainActivity.java 重要 代码

public class MainActivity extends Activity{

private Thread thread1;
private Thread thread2;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final FrameLayout frame=new FrameLayout(this);
setContentView(frame);
frame.findViewById(R.id.framelayout1);
final MyView view=new MyView(this);

thread1=new Thread(new Runnable(){
@Override
public void run(){
view.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v,MotionEvent event){
++view.r;
view.invalidate();
return true;
}
});
}
});

thread2=new Thread(new Runnable(){
@Override
public void run(){
--view.r;
view.invalidate();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});

thread1.start();
thread2.start();
frame.addView(view);
if (view.r==1)
{
thread2.interrupt();
}
if (view.r==100){
thread1.interrupt();
}
}

}

class MyView extends View{
int r=10,x,y;
public MyView(Context context){
super(context);
x=context.getResources().getDisplayMetrics().widthPixels/2;
y=context.getResources().getDisplayMetrics().heightPixels/2;
}
@Override
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
canvas.drawColor(Color.WHITE);
Paint paint=new Paint();
paint.setAntiAlias(true);
paint.setStrokeWidth(3);
paint.setStyle(Style.STROKE);
paint.setColor(Color.BLUE);
canvas.drawCircle(x,y,r,paint);
}
}

Ⅱ Android dialog能设置延迟或者倒计时吗

//可以设置延迟启动Dialog,以后用Handler设置延迟
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
new Dialog(context).show();
}
},delaytime);

delaytime//延迟时间

Ⅲ javaandroid延时函数 怎么解决这个问题

在Java中有时候需要使程序暂停一点时间,称为延时。普通延时用Thread.sleep(int)方法,这很简单。它将当前线程挂起指定的毫秒数。如

Java 代码复制内容到剪贴板
try
{
Thread.currentThread().sleep(1000);//毫秒
}
catch(Exception e){}
在这里需要解释一下线程沉睡的时间。sleep()方法并不能够让程序"严格"的沉睡指定的时间。例如当使用5000作为sleep()方法的参数时,线 程可能在实际被挂起5000.001毫秒后才会继续运行。当然,对于一般的应用程序来说,sleep()方法对时间控制的精度足够了。

但是如果要使用精确延时,最好使用Timer类:

Java 代码复制内容到剪贴板
Timer timer=new Timer();//实例化Timer类
timer.schele(new TimerTask(){
public void run(){
System.out.println("退出");
this.cancel();}},500);//五百毫秒
这种延时比sleep精确。上述延时方法只运行一次,如果需要运行多次, 使用timer.schele(new MyTask(), 1000, 2000); 则每间隔2秒执行MyTask()

Ⅳ 如何延迟android的某段代码执行时间

要起到延时的作用需要使用Handler。

举例说明:

{

;

privateHandlermHander=newHandler();

privatebooleanmActive=false;
privatebooleanmSwap=true;

privatefinalRunnablemRunnable=newRunnable(){

publicvoidrun(){
if(mActive){
if(mSwap){
mLinearLayout.setBackgroundColor(Color.WHITE);
mSwap=false;
mHander.postDelayed(mRunnable,20);
}else{
mLinearLayout.setBackgroundColor(Color.BLACK);
mSwap=true;
mHander.postDelayed(mRunnable,100);
}
}
}
};

@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mLinearLayout=(LinearLayout)findViewById(R.id.strobe);
startStrobe();
}

privatevoidstartStrobe(){
mActive=true;
mHander.post(mRunnable);
}
}

代码的意思是:程序创建一个闪光点效果,延时显示:一个是100 ms,其它是20ms。


关于Handler

Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分在消息队列中逐一将消息取出,然后对消息进行处理,也就是发送消息和接收消息不是同步的处理。 这种机制通常用来处理相对耗时比较长的操作。

Ⅳ android 开发中如何实现让程序执行一条语句后延时一段时间后再执行下面的语句

你这方法完全是利用了单片机处理速度慢才会有伪延时效果,实际上那时机器正在运算,放在好点的机器上运算速度快了当然就没延时效果了。正统的延时还是要用到楼上说的线程,安卓还有一个timer类也可以用于定时。

Ⅵ 安卓 lua语言 在for中,如何写指令延时指令

sleep() 函数?
android:Sleep(100) --延时100ms。

不过这样写,最好使用多线程,不然程序化卡在那。

Ⅶ android如何实现执行一个函数以后,过三秒再执行另一个函数

可以用定时任务实现,方法多样,比如定义一个 Handler,然后使用postDelay方法,延时时间定为3秒,还可以用 Timer实现,写一个Timer执行一个TimerTask

阅读全文

与android延时执行相关的资料

热点内容
软件加密密码是什么 浏览:991
怎么看服务器登录界面 浏览:932
手机解压完软件怎么下载 浏览:702
数控编程小数点 浏览:363
linux清除缓存命令 浏览:201
算法与数据结构javapdf 浏览:361
单片机异步通信接口 浏览:967
js获取android版本 浏览:214
linuxqt可执行程序 浏览:54
澳洲服务器怎么改美服 浏览:717
程序员算软件民工吗 浏览:639
越狱后怎么开通指定主机的服务器 浏览:689
多个群采用云服务器 浏览:261
加密病毒后缀 浏览:657
java中字符串相等 浏览:185
充电软件为什么不交付源码 浏览:367
php文件转码 浏览:356
熊猫烧香源码是国外的吗 浏览:36
使用linux的命令行 浏览:535
用外网连接公司服务器地址 浏览:149