Android moveTaskToBack()方法实现手动隐藏当前Activity

转载 2015年11月21日 18:30:21

moveTaskToBack()方法:在activity中调用 moveTaskToBack (boolean
nonRoot)
方法即可将activity 退到后台,注意不是finish()退出。

参数说明:

参数为false——代表只有当前activity是task根,指应用启动的第一个activity时,才有效;

参数为true——则忽略这个限制,任何activity都可以有效。

说明:判断Activity是否是task根,Activity本身给出了相关方法:isTaskRoot()

 

moveTaskToBack调用后,task中activity的顺序不会发生变化,例如A启动B,B中调用此方法退到后台,重新启动应用会调用B中的onRestart-onStart-onResume方法,不会重新调用onCreate,而且在B中按下back键返回的还是A,这就是退到后台的功能。


另外在activity中按下back键,实际是调用了finish方法,应用退出。虽然应用已经退出,但进程没有被杀死,android中一个应用运行于独立的一个虚拟机实例中,所以在重新启动应用时一个类中的静态对象还保持着运行时的状态,注意在合适位置复位这些状态。


关于moveTaskToBack 方法,官方API解释如下:

public boolean moveTaskToBack (boolean nonRoot)
Since: API Level 1Move the task containing this activity to the back of the activity stack. The activity's order within the task is unchanged.

Parameters
nonRoot If false then this only works if the activity is the root of a task; if true it will work for any activity in a task.

Returns
If the task was moved (or it was already at the back) true is returned, else false.

 

贴上测试代码

<span style="margin: 0px; padding: 0px; border: 0px; font-size: 14px; background: transparent;">import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
	private Button tv;
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		tv = (Button) findViewById(R.id.test);
		tv.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				/**
				 * 会调用:onPause()和onStop()
				 */
				moveTaskToBack(true);
				Log.e("====", "点击运行了moveTaskToBack()方法");
			}
		});
	}

	@Override
	protected void onPause() {
		Log.e("====", "onPause()");
		super.onPause();
	}

	@Override
	protected void onStop() {
		Log.e("====", "onStop()");
		super.onStop();
	}

	@Override
	protected void onDestroy() {
		Log.e("====", "onDestroy()");
		super.onDestroy();
	}

	@Override
	protected void onResume() {
		Log.e("====", "onResume()");
		super.onResume();
	}
	
	@Override
	protected void onStart() {
		Log.e("====", "onStart()");
		super.onStart();
	}

	@Override
	protected void onRestart() {
		Log.e("====", "onRestart()");
		super.onRestart();
	}
}
</span>

运行一下:

01-13 00:19:45.179: E/====(3801): 点击运行了moveTaskToBack()方法
01-13 00:19:45.199: E/====(3801): onPause()
01-13 00:19:45.662: E/====(3801): onStop()

隐藏Activity到后台而不关闭

moveTaskToBack()方法:在activity中调用 moveTaskToBack (boolean nonRoot)方法即可将activity 退到后台,注意不是finish()退出。 ...
  • j20lin
  • j20lin
  • 2016年07月04日 15:42
  • 1655

android activity 窗口化后 隐藏

activity 想要窗口化 在AndroidManifest.xml  设置 theme 属性                 android:name="zicox.ui.activity...
  • jilong17
  • jilong17
  • 2014年12月18日 10:40
  • 4861

Android moveTaskToBack()方法实现手动隐藏当前Activity

moveTaskToBack()方法:在activity中调用 moveTaskToBack (boolean nonRoot)方法即可将activity 退到后台,注意不是finish()退出。...
  • dadaxiaoxiaode
  • dadaxiaoxiaode
  • 2013年06月13日 10:38
  • 17548

Android之moveTaskToBack()方法实现手动隐藏当前Activity

1、moveTaskToBack()方法说明 moveTaskToBack()方法:在activity中调用 moveTaskToBack (booleannonRoot)方法即可将activity...
  • u011068702
  • u011068702
  • 2017年05月05日 20:34
  • 1051

Android之Activity后台隐藏

1 public class MainActivity extends Activity { 2 /** Called when the activity is first created...
  • yangxi_001
  • yangxi_001
  • 2013年03月06日 14:08
  • 968

关于back键隐藏当前activity和销毁Activity的两个监听方法

此两种方法可直接使用 第一个方法:当前 //true对任何Activity都 进栈,未销毁。 @Override public boolean onKeyDown(int keyCod...
  • a_fly_pig
  • a_fly_pig
  • 2016年08月19日 18:57
  • 1230

自定义Activity标题栏(增加关闭和隐藏Activity的按钮)

  • 2012年08月09日 08:50
  • 88KB
  • 下载

解决Android moveTaskToBack(false) 无法退出到后台

@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE...
  • qq_15172831
  • qq_15172831
  • 2014年11月16日 22:08
  • 1635

如何隐藏当前Activity到后台

有时候开发需要隐藏Acitvity,而不是关闭,这时候就需要使用到moveTaskToBack()函数。     moveTaskToBack()方法:在activity中调用 moveTask...
  • j20lin
  • j20lin
  • 2017年06月03日 22:22
  • 407

Android activity 去掉标题栏的三种方法

1.在代码里实现 [java] view plaincopy this.requestWindowFeature(Window.FEATURE_NO_TIT...
  • zlkun
  • zlkun
  • 2015年03月03日 10:50
  • 7768
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android moveTaskToBack()方法实现手动隐藏当前Activity
举报原因:
原因补充:

(最多只允许输入30个字)