android学习笔记(七)

一、standard

默认启动模式,每次激活Activity时都会创建Activity实例,并放入Activity栈中。

例如:一个Activity名为A1,上面有一个按钮可跳转到A1。那么如果我点击按钮,便会新启动一个Activity A1实例叠在刚才的A1之上。

Intent intent=new Intent(MainActivity.this,MainActivity.this);
startActivity(intent);

二、singleTop

可以有多个实例,但是不允许此Activity的多个实例叠加。即,如果此Activity有实例在栈顶的时候,启动这个Activity,不会创建新的实例,而会调用其onNewIntent方法。如果不在栈顶则创建新的实例。

例如:有两个Activity名为B1,B2,B1为standard,B2为singleTop。若我打开的顺序为B1->B2->B2,则实际打开的顺序为B1->B2(后一次意图打开B2,实际只调用了前一个的onNewIntent方法。若我打开的顺序为B1->B2->B1->B2,则实际打开的顺序与意图一样。)

android:launchMode="singleTop"

三、singleTask

只有一个实例,在同一个应用程序中启动他的时候,若不存在此Activity实例,则会在前栈创建一个新的实例,若存在,则会把栈中在其之上的其他Activity实例销毁掉,并调用此实例的onNewIntent方法。如果是在别的应用程序中启动它,则会新建一个栈,并在该栈中启动这个Activity,然后我在这个activity实例中再打开新的Activity,这个新的Activity实例会在一个栈中。

例如:应用程序中有三个Activity,C1,C2,C3,三个Activity可互相启动,其中C2为singleTask模式,那么无论在这个程序中如何点击启动,都只会存在一个C2(C1和C3可能存在多个实例),并且这三个Activity都在同一个tack里面。并且启动singleTask模式的activity会把task中在其之上的其它Activity实例销毁掉。


四、singleInstance

只有一个实例,并且这个实例独立运行在一个activity任务栈(task)中,这个task只有这个实例,不允许有别的Activity存在。

例如:

有三个Activity分别是D1,D2,D3,三个Activity可互相启动,其中D2为singleInstance模式。那么程序从D1开始运行,假设D1的taskId为200,那么从D1启动D2时,D2会新启动一个task,即D2与D1不在一个task中运行。

假设D2的taskId为201,再从D2启动D3时,D3的taskId为200,也就是说它被压到了D1启动的task中。

若是在别的应用程序打开D2,假设Other的taskId为200,打开D2,D2会新建一个task运行,假设它的taskId为201,那么如果这时再从D2启动D1或者D3则又会再创建一个task,因此,若操作步骤为other->D2->D1,这过程就涉及到了3个task了。



保存和恢复activity的状态:

保存状态activity的状态

String str="lalala";
   @Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
   outState.putString("str",str);
super.onSaveInstanceState(outState);
Toast.makeText(this, "onSaveInstanceState", Toast.LENGTH_SHORT);
}

 恢复状态activity的状态

@Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onRestoreInstanceState(savedInstanceState);
    if(savedInstanceState==null)
    return;
    String str=savedInstanceState.getString("str");
    Toast.makeText(this, str, Toast.LENGTH_SHORT);
    }




转载于:https://my.oschina.net/Kaming/blog/317328

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. Android 的基本概念 Android 是一个开源的操作系统,主要用于移动设备,如智能手机、平板电脑等。它基于 Linux 内核,提供了丰富的应用程序框架和 API,支持多种开发语言,如 Java、C/C++、Kotlin 等。 Android 应用程序由多个组件组成,包括活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供器(Content Provider)等。这些组件可以组合在一起,形成复杂的应用程序。 2. Android 应用程序开发 Android 应用程序开发主要使用 Java 编程语言和 Android SDK。开发工具包括 Android Studio、Eclipse 等。 Android 应用程序的结构包括布局文件、资源文件、Java 代码和清单文件等。布局文件用于定义应用程序的用户界面,资源文件包括图像、声音、样式、主题等,Java 代码实现应用程序的逻辑,清单文件描述应用程序的组件和权限等信息。 3. Android 应用程序的调试和测试 Android 应用程序的调试和测试可以使用 Android Studio 提供的调试工具,包括断点调试、日志记录等。还可以使用模拟器或真实设备进行测试。 4. Android 应用程序的发布 发布 Android 应用程序需要进行签名和打包操作,签名用于验证应用程序的身份和完整性,打包将应用程序打包成 APK 文件,可以上传到应用商店进行发布。 5. Android 应用程序的优化 Android 应用程序的优化包括优化布局、资源、代码和网络等方面,以提高应用程序的性能和用户体验。其中,布局优化包括使用布局最优化算法、使用自定义视图等;资源优化包括压缩资源、使用向量图形等;代码优化包括使用异步任务、使用缓存等;网络优化包括使用数据压缩、使用本地存储等。 6. Android 开发的挑战 Android 开发面临的挑战包括设备碎片化、安全问题、性能问题等。设备碎片化指的是不同设备的屏幕尺寸、分辨率、操作系统版本等不同,需要对应用程序进行适配;安全问题指的是应用程序需要保证用户数据的安全和隐私;性能问题指的是应用程序需要保证快速响应和流畅运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值