我正在尝试在第二个线程中向自身添加一个 int 并且我的主线程中没有任何变化
Posted
技术标签:
【中文标题】我正在尝试在第二个线程中向自身添加一个 int 并且我的主线程中没有任何变化【英文标题】:I'm trying to add an int to itself in a second thread and nothing is changing in my main thread 【发布时间】:2013-03-09 21:32:54 【问题描述】:我正在制作动态壁纸。而且我在尝试对我的精灵帧更改进行多线程处理时遇到了问题。我有一个更新方法和一个绘制方法
public void update()
try
Thread.sleep(500);
catch (InterruptedException e)
// TODO Auto-generated catch block
e.printStackTrace();
currentFrame = ++currentFrame % 2;
public void Draw(Canvas c, int sx, int sy)
update();
x = sx;
y = sy;
int srcX = currentFrame * width;
int srcY = 0;
Rect src = new Rect(srcX,srcY,srcX+width,srcY+height);
Rect dst = new Rect(x,y,x+width,y+height);
c.drawBitmap(b, src, dst, null);
我尝试过上课
public class SecondThread extends Thread
public void run()
seaweed.update();
它在自己的线程中运行更新,因此它们可以在不同的时间长度内休眠。一个人睡 50 人,另一个人睡 500 人。如果将 SecondThread 类放在 spirte 类中,它只会设置在第一帧上,如果我放入我的壁纸引擎类并尝试启动它,它会像一个步骤一样然后崩溃。我在这里做错了什么?
【问题讨论】:
【参考方案1】:尝试在更新 int 后在您的视图上调用 postInvalidate()。比如:
public void update()
try
Thread.sleep(500);
catch (InterruptedException e)
e.printStackTrace();
currentFrame = ++currentFrame % 2;
YourViewClass.this.postInvalidate();
public void Draw(Canvas c, int sx, int sy)
update();
x = sx;
y = sy;
int srcX = currentFrame * width;
int srcY = 0;
Rect src = new Rect(srcX,srcY,srcX+width,srcY+height);
Rect dst = new Rect(x,y,x+width,y+height);
c.drawBitmap(b, src, dst, null);
【讨论】:
表示我的壁纸引擎无法解析为这种类型。以上是关于我正在尝试在第二个线程中向自身添加一个 int 并且我的主线程中没有任何变化的主要内容,如果未能解决你的问题,请参考以下文章
在 AlertDialog 中向 LinearLayout 添加多行