2012-05-06 68 views
1

嘿,我使用下面的代码来使用按钮来获得新的文本到一个文本视图, 但它的滞后,并没有工作一半的时间,我按它,但另一半的时间它工作正常,任何人有任何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视图白衣相同的代码但对于不同的按钮和textviews并且还白衣不同的文本中,每个含有150周围不同的文本(例)。

改变了代码升技它变得更好,但是还是有点慢

这是在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个不同的文本

回答

0

更新:好吧,你在做151你的代码中有许多元素吗?不在这个代码示例中。改用%4。 Update2:或random.nextInt(4)

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

  1. 不要每次创建Random对象,在启动时重新创建一次并重新使用。
  2. 不要一遍又一遍地查看视图,只需在启动时进行并保存对其的引用即可。
+0

是的,我确实有151在实际的代码,我改成了random.nextInt(4),但它仍然缓慢。 – user1373308

+0

这条线现在看起来像什么?只是'switch(random.nextInt(4)){'并且不是%151我希望? –

+0

OH我误读了你所说的话,现在改变了它,它完美的工作,你的救星m8! ty – user1373308

1

没有看到更多,我会说你生成的数字并不总是覆盖在你的switch语句中。我建议逐行执行代码,看看在切换语句时会发生什么。

0

但其laggy并不起作用一半的时间我按下它<

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

/Math.abs