Java Android Studio代码中的2个活动问题
我正在通过Android Studio编写一个小应用程序。我正在进行两项活动。当我的第一个活动打开第二个活动时(当我通过模拟器运行应用程序时),我的应用程序就会停止响应。当我在第二个活动中插入for循环时,我意识到问题首先出现了。但是笔记的音频输出仍然是在后台完成的 如果你能在这里帮助我,那就太好了 代码如下:Java Android Studio代码中的2个活动问题,java,android,android-activity,Java,Android,Android Activity,我正在通过Android Studio编写一个小应用程序。我正在进行两项活动。当我的第一个活动打开第二个活动时(当我通过模拟器运行应用程序时),我的应用程序就会停止响应。当我在第二个活动中插入for循环时,我意识到问题首先出现了。但是笔记的音频输出仍然是在后台完成的 如果你能在这里帮助我,那就太好了 代码如下: public class MainActivity extends AppCompatActivity { private Button myButton1, myButton2; pr
public class MainActivity extends AppCompatActivity {
private Button myButton1, myButton2;
private EditText number;
TextView display;
int time = 0;
Bundle b;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
number = (EditText) findViewById(R.id.editTextNumber);
myButton2 = (Button) findViewById(R.id.button);
display = (TextView) findViewById(R.id.textView2);
myButton2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String time = number.getText().toString();
display.setText(time);
}
});
myButton1 = (Button) findViewById(R.id.myButton);
myButton1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
time = Integer.valueOf(number.getText().toString());
open_activity2();
}
});
}
public void open_activity2() {
Intent intent = new Intent(this, Activity2.class);
intent.putExtra("Time", time);
startActivity(intent);
}
}
活动2的代码:
public class Activity2 extends AppCompatActivity {
private SoundPool soundPool;
private int sound1, sound2, sound3;
private Bundle b;
private int timeCycle;
private TextView displayNotes;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_2);
displayNotes = (TextView) findViewById(R.id.textView);
b = getIntent().getExtras();
timeCycle = b.getInt("Time");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
AudioAttributes audioAttributes = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build();
soundPool = new SoundPool.Builder()
.setMaxStreams(5)
.setAudioAttributes(audioAttributes)
.build();
} else {
soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
}
sound1 = soundPool.load(this, R.raw.sound1, 1);
sound2 = soundPool.load(this, R.raw.sound2, 1);
sound3 = soundPool.load(this, R.raw.sound3, 1);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
try {
TimeUnit.SECONDS.sleep(timeCycle);
runOnUiThread(new Runnable() {
@Override
public void run() {
randomNote();
}
});
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}, 0);
}
protected void randomNote () {
Random r = new Random();
int randomNumber = r.nextInt(3);
switch (randomNumber) {
case 0:
soundPool.play(sound1, 1, 1, 1, 0, 1);
displayNotes.setText("Note: C");
break;
case 1:
soundPool.play(sound2, 1, 1, 1, 0, 1);
displayNotes.setText("Note: D");
break;
case 2:
soundPool.play(sound3, 1, 1, 1, 0, 1);
displayNotes.setText("Note: E");
break;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
soundPool.release();
soundPool = null;
}
你在跑步
for (int i = 0; i < 10; i++) {
try {
TimeUnit.SECONDS.sleep(timeCycle);
randomNote();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
for(int i=0;i<10;i++){
试一试{
时间单位。秒。睡眠(时间周期);
随机注释();
}捕捉(中断异常e){
e、 printStackTrace();
}
}
在UI线程上。这将导致UI更改冻结,直到循环完成。如果希望在运行此代码时具有活动UI,请使用处理程序:
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
try {
TimeUnit.SECONDS.sleep(timeCycle);
runOnUiThread(new Runnable() {
@Override
public void run() {
randomNote();
}
});
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}, 0);
new Handler().postDelayed(new Runnable()){
@凌驾
公开募捐{
对于(int i=0;i<10;i++){
试一试{
时间单位。秒。睡眠(时间周期);
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
随机注释();
}
});
}捕捉(中断异常e){
e、 printStackTrace();
}
}
}
}, 0);
我在回复中添加了选项来执行此操作。你没有看到它吗?或者它对你不起作用吗?如果它对你起作用,请将此标记为正确答案:)好的,应用程序会打开第二个活动,但在播放第一个/第二个音符后,它会再次停止响应。它也不会将注释显示为文本视图:/哦,对不起,我没有看到randomNote正在访问UI,我将编辑我的答案以处理该问题,现在当doneCheck时将再次进行评论,查看是否正确。您能在错误日志中找到异常的部分吗?图片中没有包括崩溃的原因对不起,我的错:),也找到了这个链接:这是同一个链接?请尝试查找异常消息。。XX类似的东西,这张图片中的任何东西都是通用系统日志。尝试将筛选设置为错误,这将有助于编辑错误日志
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
try {
TimeUnit.SECONDS.sleep(timeCycle);
runOnUiThread(new Runnable() {
@Override
public void run() {
randomNote();
}
});
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}, 0);