gpt4 book ai didi

android - 如何在 Android 中手动暂停 Activity

转载 作者:太空宇宙 更新时间:2023-11-03 12:08:25 25 4
gpt4 key购买 nike

我有两个 Activity ,AB。我通过这段代码从 A 调用了 B :

 Intent myIntent = new Intent(this, myAcitivity.class);        
myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(myIntent);

并且在 B 上,我放置了一个按钮以通过暂停 Activity B 返回到 Activity A。我试图暂停 B 以便它进入后台并转到 A ,但它正在运行。我试过了

一个解决方案:

moveTaskToBack(true);

不是将 B 置于后台,而是将 A 置于后台。

有什么解决办法吗?

最佳答案

要覆盖后退按钮的行为,您可以覆盖 Activity 中的 onBackPressed() 方法,该方法在您按下后退按钮时调用:

@Override
public void onBackPressed() {
moveTaskToBack(true); // "Hide" your current Activity
}

通过使用moveTaskToBack(true),您的 Activity 被发送到后台,但不能保证它会保持在“暂停”状态,如果它需要内存,Android 可以终止它。我不知道你为什么想要这种行为我认为最好保存 Activity 状态并在你回来时恢复它,或者简单地用你想带的新 Activity 启动另一个 Intent。

或者,

使用这段代码onBackPressed()

boolean mIsPaused = false;

final Thread workerThread = new Thread(new Runnable() {
@Override
public void run() {
doA();
checkPause();
doB();
checkPause();
...
}
}
});

private void checkPause() {
while(isPaused()) {
// you could also use the notify/wait pattern but that is probably needless complexity for this use case.
Thread.sleep(50);
}
}

private synchronized boolean isPaused() {
return mIsPaused;
}

private synchronized void setPaused(boolean isPaused) {
mIsPaused = isPaused;
}


pauseButton.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// disable any UI elements that need it
setIsPaused(true);
}
});

unPauseButton.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// re-enable any UI elements that need it
setIsPaused(false);
}
});

关于android - 如何在 Android 中手动暂停 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20185989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com