Activity形态:
Running:与用户交互的可见界面
Paused:Activity失去焦点,失去交互能力,所有的数据依然保存着
Stopped:当前Activity被另一个Activity完全覆盖,不可见,数据依然保存着
Killed:Activity被系统回收。
public class MyClass extends Activity {
// 在Activity生命周期开始时调用。创建基本的UI元素
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState != null) {
String temp = savedInstanceState.getString("key");
Log.d("TAG", temp);
}
}
// 在onCreate完成后调用,用来恢复UI状态
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
}
// 当activity从停止状态重新启动时调用
@Override
protected void onRestart() {
}
// 对用户可见时调用
@Override
protected void onStart() {
}
// 与用户交互时调用,此时activity在activity栈(读zhan)顶。
@Override
protected void onResume() {
}
// activity即将移出栈顶时保留UI状态时调用
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
String temp = "临时保存的数据";
outState.putString("key", temp);// 在onCreate中恢复
}
// 当系统启动另外一个activity时调用,用来提交那些持久数据的改变、停止动画、和其他占用CPU资源的东西。代码执行要快。
@Override
protected void onPause() {
}
// 对用户不再可见时调用。一个新activity启动、其他activity被切换至前景、当前activity被销毁。
@Override
protected void onStop() {
}
// 当activity被销毁前所调用的最后一个方法。进程终止时会发生。
@Override
protected void onDestroy() {
}
Activity间传递数据:
1.调用者需要override onActivityResult()方法;
2.调用时使用statActivityForResult();
3.被调用者在finish()之前调用setResult()方法返回数据。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case MY_REQUEST_CODE:
if (resultCode == RESULT_OK) {
Bundle bundle = data.getExtras();
if (bundle != null) {
String str = bundle.getString("msg");
Log.d("TAG", str);
}else {
Log.d("TAG", "bundle == null");
}
}
break;
default:
break;
}
}
复写onActivityResult()方法。
requestCode用以标识哪次请求;
result用以标识被调用者返回的code;
data为所要传递的数据,使用getExtras()把它取出来。
Intent intent = new Intent();
intent.setClass(FromActivity.this, ToActivity.class);
Bundle bundle = new Bundle();
bundle.putString("msg",msg);
intent.putExtras(bundle);
活动的启动模式:
1.standard——默认的启动模式,每次启动活动都会创建一个新的实例;
2.singleTop——启动活动时如果该活动已经处在返回栈的栈顶,则直接使用,不再创建新的活动实例;
3.singleTask——某个活动在整个应用程序的上下文中只存在一个实例;FLAG_ACTIVITY_CLEAR_TOP
4.singleInstance——所有的应用程序都共享活动实例。
Intent Flag启动模式:
Intent.FLAG_ACTIVITY_NEW_TASK:使用一个新的Task启动Activity,启动的每个Activity都将在一个新的Task中;
FLAG_ACTIVITY_SINGLE_TOP:使用singletop模式来启动一个Activity;
FLAG_ACTIVITY_CLEAR_TOP:使用singletask模式来启动一个Activity;
FLAG_ACTIVITY_NO_HISTORY:当该Activity启动其他Activity后,该Activity就消失。
全屏和隐藏标题栏的方法,在Activity.setContentView()之前调用,否则无效。
// 全屏
public void setFullscreen(){
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
// 隐藏标题栏
public void setNoTitle(){
requestWindowFeature(Window.FEATURE_NO_TITLE);
}
软件的安装和卸载
// 安装
String fileName = Environment.getExternalStorageDirectory() + "/myApp.apk";
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("file://"+filePath), "application/vnd.android.package-archive");
// 或者Uri.fromFile(new File(fileName)),"appli..."
// 卸载
Uri packageUri = Uri.parse("package:com.android.myapp");
Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageUri);
startActivity(uninstallIntent);