如何手动暂停Android中的Activity

Ham*_*hid 3 android android-intent

我有两个活动,AB.我BA这段代码打来电话:

 Intent myIntent = new Intent(this, myAcitivity.class);        
 myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 startActivity(myIntent);
Run Code Online (Sandbox Code Playgroud)

然后B,我放置一个按钮,A通过暂停活动返回活动B.我试图暂停,B以便它转到后台然后去A,但它正在工作.我试过了

一解决方案:

moveTaskToBack(true);

它不是放在B后台,而是放在A后台.

有解决方案吗

Mit*_*hah 5

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

@Override
public void onBackPressed() {
   moveTaskToBack(true);  // "Hide" your current Activity
}
Run Code Online (Sandbox Code Playgroud)

通过使用moveTaskToBack(true)您的活动发送到后台,但不能保证它将保持"暂停"状态,如果需要内存,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);
 }
});
Run Code Online (Sandbox Code Playgroud)