这个touchevent给了我一个完整的问题列表..这是纯粹的图形化,我在从UI接收信息的同时运行另一个线程。
无论如何,当你的手指按在屏幕上时,我正试图运行一种方法。
所以我只是简化我的编码ALOT。
// global up top
boolean finderdown;
//... lots of code
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
HoldingDown(event.getX(), event.getY(), heightf, widthf);
}
if (event.getAction() == MotionEvent.ACTION_UP)
{
HodlingDown(event.getX(), event.getY(), heightf, widthf);
fingerdown = false
}
//.. lots of code
public HoldingDown Click(final float x, final float y, final float height, final float width)
{
Thread myThread = new Thread() {
@Override
public void run() {
while(fingerdown==true);
{
// class object = new class() in the activity area
object.function(x ,y , height, width);
}
}
};
myThread.start();
}
// manages Threads messages
private Handler threadHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
// handle message
}
};
我运行这样的东西,似乎加快了我的另一个线程?
答案 0 :(得分:0)
根据您的代码,您每次触摸屏幕时都会创建一个新主题,并且fingerdown
中的MotionEvent.ACTION_UP
为x, y , width, height
,但您认为它是真的。
我建议你将fingerdown
作为实例变量,并通过在事件代码中使boolean var = false; //instance variable to check if thread has started running for first time
int x, y, width, height; // variables as instance variables
boolean fingerdown;
Thread myThread = new Thread() {
@Override
public void run() {
while(fingerdown==true);
{
// class object = new class() in the activity area
object.function(this.x ,this.y , this.height, this.width);
}
}
};
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
this.x = event.getX();
this.y = event.getY();
this.width = widthf;
this.height = heightf;
fingerdown = true;
if(!var){
var = true;
myThread.start();
}
}
if (event.getAction() == MotionEvent.ACTION_UP)
{
fingerdown = false
}
为true或false来控制线程内代码的执行。
尝试使用以下代码
{{1}}
因此,不是每次都在触摸事件中创建新线程,而是只使布尔值为true和false,并控制代码的执行。