如何在不影响其行为的情况下重新启动 singleTask Activity
How to relaunch a singleTask Activity without affect its behaviour
我有一个 Activity 是 singleTask,我想在用户单击按钮时重新启动(重新显示)这个 Activity。
当我第一次调用 activity 时,它将根据通过 Intent 传递的一些数据播放音乐。但是当用户按回到我的 MainActivity 时,他将能够按一个按钮将他带回 Player activity。问题是,当用户按下按钮时,activity 会重新启动,但它似乎不是通过 onNewIntent
启动的,因为它从头开始再次播放(将原始播放列表发送到服务,从开始)。
是否只重新显示 activity 而没有 "doing nothing",只是继续之前的操作?
编辑:
我就是这样调用我的 singleTask Activity:
littlePlayer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!isPlaying) {
Intent it = new Intent(MainActivity.this, Player_.class);
it.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
it.putExtra("json", lastJson);
it.putExtra("position", position);
it.putExtra("playing_position", playingPosition);
startActivity(it);
}else{
Intent it = new Intent(MainActivity.this, Player_.class);
it.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(it);
//Player_.intent(MainActivity.this).start();
}
}
});
将 activity 从 singleTask
更改为 singleTop
以避免重新启动 activity。
然后,像这样调用你的activity,
Intent intent= new Intent(context, YourActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
我有一个 Activity 是 singleTask,我想在用户单击按钮时重新启动(重新显示)这个 Activity。
当我第一次调用 activity 时,它将根据通过 Intent 传递的一些数据播放音乐。但是当用户按回到我的 MainActivity 时,他将能够按一个按钮将他带回 Player activity。问题是,当用户按下按钮时,activity 会重新启动,但它似乎不是通过 onNewIntent
启动的,因为它从头开始再次播放(将原始播放列表发送到服务,从开始)。
是否只重新显示 activity 而没有 "doing nothing",只是继续之前的操作?
编辑:
我就是这样调用我的 singleTask Activity:
littlePlayer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!isPlaying) {
Intent it = new Intent(MainActivity.this, Player_.class);
it.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
it.putExtra("json", lastJson);
it.putExtra("position", position);
it.putExtra("playing_position", playingPosition);
startActivity(it);
}else{
Intent it = new Intent(MainActivity.this, Player_.class);
it.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(it);
//Player_.intent(MainActivity.this).start();
}
}
});
将 activity 从 singleTask
更改为 singleTop
以避免重新启动 activity。
然后,像这样调用你的activity,
Intent intent= new Intent(context, YourActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);