好的我是Android编程的新手,但我创建了一个应用程序,如下所示。
package com.michaelpeerman.probability;
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.util.Random;
public class ProbabilityActivity extends Activity
{
private EditText number;
private Button submit;
public void flipcoin(int numberint)
{
TextView result = (TextView)findViewById(R.id.result);
int heads = 0;
int tails = 0;
for (int j = 0; j < numberint; j++)
{
int i = 1 + new Random().nextInt(2);
if (i == 1)
heads++;
if (i == 2)
tails++;
result.setText("heads : " + heads + "\ntails : " + tails);
}
}
public void onCreate(Bundle paramBundle)
{
super.onCreate(paramBundle);
setContentView(R.layout.main);
submit = ((Button)findViewById(R.id.submit));
submit.setOnClickListener(new View.OnClickListener()
{
public void onClick(View paramView)
{
number = ((EditText)findViewById(R.id.number));
int numberint = Integer.parseInt(number.getText().toString());
flipcoin(numberint);
}
});
}
}
但与
相比,这个速度非常慢package com.michaelpeerman.probability;
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.util.Random;
public class ProbabilityActivity extends Activity
{
public void onCreate(Bundle paramBundle)
{
super.onCreate(paramBundle);
setContentView(R.layout.main);
TextView result = (TextView)findViewById(R.id.result);
int heads = 0;
int tails = 0;
for (int j = 0; j < 50000; j++)
{
int i = 1 + new Random().nextInt(2);
if (i == 1)
heads++;
if (i == 2)
tails++;
result.setText("heads : " + heads + "\ntails : " + tails);
}
}
我不明白为什么会这样。它们都使用相同的代码,但第一个代码允许您输入数字并在运行循环之前按提交。 他们不应该是相同的速度?我该怎么做才能加快速度?
答案 0 :(得分:0)
首先,应用程序滞后于您提供的任何输入,或者仅适用于特定值。正在进行的唯一额外计算是从字符串到int的转换,这不应导致它滞后。由于内存分配或未捕获的异常的某些问题,可能存在该问题。如果您在模拟器上运行日志,是否可以发布日志。