随机文字,缓慢而滞后

时间:2012-05-06 19:34:26

标签: android

嘿,我正在使用下面的代码作为按下按钮将新文本输入到textview, 但它的滞后并且在我按下它的一半时间不起作用,但另一半时间它工作正常,任何人都有任何idé?

final Button button = (Button) findViewById(R.id.slumpaovrigt);
    button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
    Random myRandom5 = new Random();
    TextView textovrigt = (TextView) findViewById(R.id.textovrigt);
    switch(myRandom5.nextInt() %151) {
    case 0:
        textovrigt.setText("text 1");
        break;
    case 1:
        textovrigt.setText("text 2");
        break;
    case 2:
        textovrigt.setText("text 3");
        break;
    case 3:
        textovrigt.setText("text 4");
        break;
    }
    }
    });
    }
    }

此外,我使用4个不同的xml视图,使用相同的代码但不同的按钮和textview以及不同的文本,每个包含大约150种不同的文本(案例)。

更改了代码abit并且它变得更好,但仍然有点慢

这是java文件中的完整代码

import java.util.Random;

import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class Ovrigtskamt extends Activity {

    Button slumpaovrigt;
TextView textovrigt;
Random slumpaovrigt2 = new Random();


@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.ovrigttext);
    super.onCreate(savedInstanceState);
    this.setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);



    slumpaovrigt = (Button) findViewById(R.id.slumpaovrigt);
    textovrigt = (TextView)findViewById(R.id.textovrigt);

    loadDoc();
}

private void loadDoc(){




    String s = "";

    for(int x=0;x<=100;x++){
        s += "Line: "+String.valueOf(x)+"\n";
    }

    textovrigt.setMovementMethod(new ScrollingMovementMethod());

    textovrigt.setText("Klicka på Slumpa");




    slumpaovrigt.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {




    switch(slumpaovrigt2.nextInt() %4) {
    case 0:
  case 0:
    textovrigt.setText("text 1");
    break;
case 1:
    textovrigt.setText("text 2");
    break;
case 2:
    textovrigt.setText("text 3");
    break;
case 3:
    textovrigt.setText("text 4");
    break;
}
}
});
}
}

但正如所说的151个不同的文本

3 个答案:

答案 0 :(得分:1)

如果没有看到更多,我会说你生成的数字并不总是包含在你的switch语句中。我建议逐行逐步执行代码,看看当你到达switch语句时会发生什么。

答案 1 :(得分:0)

更新:你正在做%151你的代码中有那么多元素吗?不在此代码示例中。请改用%4。 Update2:或random.nextInt(4)

我们可以直接看到两个优化,但听起来很奇怪,如果这会导致真正的滞后。

  1. 每次都不要创建Random对象,在启动时创建一次并重复使用。
  2. 不要一遍又一遍地找到视图,只需在启动时执行并保存对它的引用。

答案 2 :(得分:0)

  

但它的滞后并且在我按下它的一半时间内不起作用

难怪它的一半时间不起作用,因为你的函数myRandom5.nextInt()%151将产生从-151到151的所有值。

/Math.abs