Activity大全

来源:互联网 发布:mac 数据库可视化工具 编辑:程序博客网 时间:2024/05/23 01:22

Activity的常用方法

Activity启动模式

方法执行顺序 调用 说明 standard 标准模式(默认) singleTop 栈顶复用模式 singleTask 栈内复用模式 singleInstance 单实例模式 - 加强的singleTask模式

standard : 在启动了这个Activity栈的栈顶重新创建一个新的实例
singleTop:
- 判断需要启动的Activity是否为任务栈栈顶 ,如果是,则不会重新创建,如果不是,则会重新创建
- 不重新创建时候,该Activity的 onNewIntent(Intent intent) 方法会被回调,通过该方法的参数,可以取出当前请求的信息;
- 系统可能会杀死该Activity,杀死之后,启动情况与第一次启动相同,所以有必要在onCreate与onNewIntent方法中调用同一个处理数据的方法
- 运用场景:常运用于通知栏弹出Notification,点击Notification跳转到指定的Activity,设置singleTop模式

生命周期相关方法

方法执行顺序 调用 主用途 是否可见(Visibility) 用户交互(Click) onCreate() 创建 初始化 NO ON onStart() 开始 YES ON onRestart() 重新开始 YES ON onResume() 获得焦点且可见 YES YES onPause() 失去焦点且可见 YES NO onStop() 不可见 NO NO onDistory() 销毁 关闭资源 NO NO

关闭Activity的方法

方法 调用 activity.onFinish() 依次调用Activity生命周期相关方法正常关闭 android.os.Process.killProcess(android.os.Process.myPid()) 绕过Activityd的生命周期强制关闭 isFinishing() 在activity被销毁前会调用该方法

1. activity在finish时候,还有收到广播,结果导致bug在广播接收器中先判断一下比较保险。或者在onDestroy里面注销广播
2. acivity在finish时候,这时候handler.sendMessage,这时候也会导致bug
这时候最好在finish函数里面removeAllCallbackAndMessage(this)

private BroadcastReceiver mIntentReceiver = new BroadcastReceiver()    {        @Override        public void onReceive(Context context, Intent intent)        {            Log.d(TAG, intent.toString());                final String action = intent.getAction();            if(isFinishing())            {                  。。。。。。。                              return;            }}

一个Activity打开另一个Activity的方法

方法 调用 startActivity(Intent) 打开一个Activity startActivity(Intent,Bundle) 打开一个Activity并通过Bundle传递参数 startActivities(Intent[]) 打开多个Activity startActivities(Intent[],Bundle) 打开多个Activity并通过Bundle传递参数 startActivityForResult(Intent,int requestCode) 打开一个Activity并获取返回结果, startActivityForResult(Intent,int,Bundle) 返回结果通过onActivityResult()方法获取。

- Intent:组件之间调用需要使用Intent,可以调用setExtra()方法传递数据
- Intent[]:Intent数组,根据在数组中的顺序依次调用
- int requestCode:与onActivityResult(int requestCode, int resultCode,
Intent data)中的requestCode对应
- Bundle 可以通过Bundle传递数据

一个Activity向另一Activity返回结果

步骤 方法 调用 1 setResult(int resultCode) 返回结果码 1 setResult(int resultCode,Intent) 返回结果码和通过Intent传递数据 2 finish() 关闭当前Activity

一个Activity打开另一个Activity,然后获取返回结果

方法 调用 onActivityResult(int requestCode, int resultCode, Intent data)

通过startActivityForResult()方法启动另外一个Activity才会调用onActivityResult(),startActivity()方法和startActivities()不会调用此方法。
- int requestCode:通过 startActivityForResult(Intent,int requestCode)设置的请求码
- int resultCode:通过setResult(int resultCode)设置的返回码
- Intent

一个Activity获取另一个Activity返回结果

步骤 方法 调用 1 activityA.startActivityForResult(Intent,int requestCode) Activity调用 2 activityB.setResult(int resultCode) 返回结果码 2 activityB.setResult(int resultCode,Intent) 返回结果码和通过Intent传递数据 3 activityB.finish() 关闭当前Activity 4 activityA.onActivityResult(int requestCode, int resultCode, Intent) Intent是setResult()方法返回的Intent

- int requestCode 请求码
- int resultCode
- Intent 通过intent传递数据

保存、恢复当前Activity状态

步骤 方法 调用 1 activityA.onSaveInstanceState(Bundle,PersistableBundle) 储存需要保存的变量 1 activityA.onSaveInstanceState(Bundle) 储存需要保存的变量 2 activityA.onRestoreInstanceState(Bundle,PersistableBundle) 恢复保存的变量 2 activityA.onRestoreInstanceState(Bundle) 恢复保存的变量

- 情况1.资源相关的系统配置发生改变
- 情况2:资源内存不足导致低优先级Activity被杀死

0 0