首先实现一种最简单的列表方式,即列表中只显示文本,如下图所示,把测试题目的类型展示在界面上。在布局文件中,需要设置ListView控件的id、宽度和高度等属性。...在适配器中,可以设置不同的列表项布局,以展示不同的列表效果。在Android系统中已经定义了常用的列表显示效果。...,系统都会把活动A所在的Task转到前台,从而让活动A显示在屏幕上。...下面一行标签表示应用程序将显示在程序列表里,也就是在Android桌面上会显示一个图标(launcher)。...Flags:Flags可以为意图设置某种标志,可以用作意图发送者签名。设置了Flags的意图启动一个 Activity 后,这个Activity可以根据意图中的Flags值判断意图来自哪里。
发送特定广播: 在需要结束应用时, 发送一个特定的广播,每个 Activity 收到广播后,关闭 即可。...注意:以上两种方式都能够为 Activity 指定启动模式,可是二者还是有差别的。 优先级:动态指定方式即另外一种比第一种优先级要高,若两者同一时候存在,以另外一种方式为准。...举例来说,这可能发生在,如果一个前台活动在一个对话框(其他进程的)运行之后仍然是可视的,比如输入法的弹出时。 寄宿着一个服务,该服务绑定到一个可视的活动。...一般地有很多后台进程运行着,因此它们保持在一个 LRU( least recently used ,即最近最少使用,如果您学过操作系统的话会觉得它很熟悉,跟内存的页面置换算法 LRU 一样)列表以确保最近使用最多的活动的进程最后被杀...系统进程杀死这些进程,以在进程 cache 和潜在的内核 cache 之间平衡整个系统资源。 android 进程的回收顺序从先到后分别是:空进程,后台进程,服务进程,可见进程,前台进程。
onPause()这个方法在系统准备去启动或者恢复另一个活动的时候调用。...onStop()第一行代码——Android58这个方法在活动完全不可见的时候调用。...2.暂停:不是栈顶的位置,但是在界面依旧可见,并不是每一个活动都占满整个屏幕,当系统内存比较低的时候会回收。...我的答案: 无序广播:所有跟广播的intent匹配的广播接收者都可以收到该广播,并且是没有先后顺序(同时收到) 有序广播:所有跟广播的intent匹配的广播接收者都可以收到该广播,但是会按照广播接收者的优先级来决定接收的先后顺序...SQLite的设计者们为了达到这一目标,在功能上作出了很多关键性的取舍,与此同时,也失去了一些对RDBMS关键性功能的支持,如高并发、细粒度访问控制(如行级锁)、丰富的内置函数、存储过程和复杂的SQL语句等
,这个name的值就会成为这个activity动作, 在隐式启动Activity时,意图中设置的action必须跟"com.itheima.sa"是完全匹配的) data...", mp3Info);在另一个activity,或服务、广播中取出: Mp3Info mp3Info =(Mp3Info)intent.getSerializableExtra("mp3Info");...,返回一个数据给A界面 开启activity并且获取返回值 startActivityForResult(intent, 0); 在新开启的界面里面实现设置数据的逻辑 Intent data = new...Intent(); data.putExtra("phone", phone); //设置一个结果数据,数据会返回给调用者//第一个参数用于向上一个活动返回处理结果,一般只使用 RESULT_OK 或...Activity中还提供了一个 onSaveInstanceState()回调方法,这个方法会保证一定在活动被回收之前调用, 可以通过这个方法来解决活动被回收时临时数据得不到保存的问题。
或者通过Intent的flag来设置。...singleTop:在singleTop模式下,如果当前Activity D位于栈顶,此时通过Intent跳转到它本身的Activity(即D),那么不会重新创建一个新的D实例(走onNewIntent...D,之后D通过Intent跳转到D,栈2中不会压入新的D,所以2个栈中的情况没发生改变。...例如A B,在B中以这种模式启动C,C再启动D,则当前的task栈变成A B D。.../tools/proguard/proguard-android.txt;另一个是自定义的混淆文件,可以在项目的app文件夹下找到该文件,在该文件中定义引入的第三方依赖包的混淆规则。
通过解析各种intent,从一个屏幕导航到另一个屏幕是很简单的。当向前导航时,activity 将会调用startActivity(Intent myIntent)方法。..., 此时 BroadcastReceiver 的所在进程很容易在系统需要内存时被优先杀死 , 因为它属于空进程 ( 没有任何活动组件的进程 )....比较好的一个例子就是一个正在从播放列表中播放歌曲的媒体播放器。在一个媒体播放器的应用中,应该会有多个 activity,让使用者可以选择歌曲并播放歌曲。...Activity 处于活动(Active)或运行 (Running)状态 2.Paused——暂停状态 当Activity失去焦点但仍对用户可见(如在它之上有另一个透明的Activity或Toast...只是对用户不可见,当其他地方需要内存时它往往被系统杀掉 4.Dead——非活动状态 Activity 尚未被启动、已经被手动终止,或已经被系统回收时处于非活动的状态,要手动终止Activity
那么你再点击一个按钮跳转到另一个界面时,就是又一个Activity界面,由Activity可以分出很多的知识点。...如,Activity的生命周期,activity的启动方式,还有如果两个activity的数据交互,就是页面和页面之间的数据交互,如,你在另一个界面上输入的数据,保存到另一个页面上,进行显示效果;activity...两个activity进行交互,周期是怎么样的呢,交互就是一个页面跳转到另一个页面效果。...:设备电池电量不足 ACTION_GET_CONTENT:允许用户选择特定类型的数据并将其返回 ACTION_HEADSET_PLUG:插入有线耳机或拔下插头 setData:设置数据 setAction...:设置要执行的一般操作等。
当Activity被onStop后,但是没有onDestroy,在再次启动此Activity时调用onRestart(而不再调用onCreate)方法。...startActivityForResult(intent):打开另一个Activit,同时向开启的Activity传递数据,并回传数据。...:加载网页 ListView:显示列表 GridView:显示表格式列表 ScrollView:内容可滚动视图 SufaceView:非常重要的绘图容器 针对比较常用的控件一和Activity之间传递数据写了一个小的...进入主界面,有两个按钮,一个TextView,一个按钮是进入买书界面,点击该按钮将会跳转到买书界面,您要买的书后面是一个TextView,在买书界面输入书名后,提交,会把输入的书名返回给该界面,另一个按钮是重置...Ctrl + H:显示类结构图 Ctrl + D:复制行 Ctrl + Q:显示注释文档 Alt + Up / Down:在方法间快速移动定位 Ctrl + Shift + Up / Down:代码向上
Activity中提供了一个 onSaveInstanceState()回调方法,这个方法会保证一定在活动被回收之前调用, 可以通过这个方法来解决活动被回收时临时数据得不到保存的问题。...这个参数在一般情况下都是null,但是当活动被系统回收之前有通过 onSaveInstanceState()方法来保存数据的话,这个参就会带有之前所保存的全部数据 protected void onCreate...(intent); 传递对象 如果要传递对象,需要把对象类序列化,然后intent.putExtra("mp3Info", mp3Info) 在另一个activity,或服务、广播中取出: Mp3Info...还有findViewByTag,在replace 的时候设置tag 或者在fragment里声明接口,然后activity获得fragment对象调用接口里的方法 fragment数据传递给活动,直接getActivity...在缓存文件里面加入时间戳,根据实际情况在一定的时间差内再次访问网络数据、判断URL 在缓存的第一行写一个上当前时间,读的时候判断是不是过期,根据需求看需要多久跟新 分页怎么做的?
Activity中提供了一个 onSaveInstanceState()回调方法,这个方法会保证一定在活动被回收之前调用, 可以通过这个方法来解决活动被回收时临时数据得不到保存的问题。...这个参数在一般情况下都是null,但是当活动被系统回收之前有通过 onSaveInstanceState()方法来保存数据的话,这个参就会带有之前所保存的全部数据 protected void onCreate...startActivity(intent); 传递对象 如果要传递对象,需要把对象类序列化,然后intent.putExtra("mp3Info", mp3Info) 在另一个activity,或服务...假设用户在主页跳转到其他页面,运行多次操作后想返回到主页,假设不使用SingleTask模式,在点击返回的过程中会多次看到主页,这明显就是设计不合理了。...还有findViewByTag,在replace 的时候设置tag 或者在fragment里声明接口,然后activity获得fragment对象调用接口里的方法 fragment数据传递给活动,直接getActivity
在启动活动时传递数据的思路很简单,Intent中提供了一系列putExtra()方法的重载,可以将我们想要的数据暂存在Intent中,启动另一个活动后,只需要将这些数据取出就可以了。 ...例如我们在mainActivity中的button中设置点击事件的监听事件中,启动Intent之前通过putExtra()方法传入各种类型的数据, 1 button.setOnClickListener...()方法来启动费另一个活动,该方法接收两个参数,第一个是Intent,第二个是请求码,用于在之后的回调中判断数据的来源,该请求码只要是一个唯一值就可以了。...此时的活动一定位于返回栈栈顶,并且处于运行状态。 onPause():在系统准备去启动或恢复另一个活动的时候调用。...在此生命期中,活动总是可见的。在这两个方法之间,可以保持显示Activity所需要的资源。如在onStart()中注册一个广播接收者监听影响你的UI的改变,在onStop()中注销。
活动创建的步骤小结: 我们以手动创建活动为例: 创建一个空的活动 -> 创建布局 -> 活动中加载布局 -> 注册活动 -> 配置程序配置主活动 2.2.4 在活动中使用Toast Toast是Android...唯一的问题在于,你在启动器中点击应用的图标只会进入到该应用的主活动,那么怎样才能由主活动跳转到其他活动呢?我们现在就来一起看一看。...在启动活动时传递数据的思路很简单,Intent中提供了一系列putExtra()方法的重载,可以把我们想要传递的数据暂存在Intent中,启动了另一个活动后,只需要把这些数据再从Intent中取出就可以了...体验活动的生命周期: 详情还是看第一行代码比较好,但是主要思想是我们通过创建多个活动,通过按钮进行任务之间的切换,查看日志的内容进行观察上图中的方法调用情况: ? ...五、活动的启动模式 活动的启动模式对你来说应该是个全新的概念,在实际项目中我们应该根据特定的需求为每个活动指定恰当的启动模式。
关于activity的生命周期:要知道的知识点 1.每个生命活动执行的顺序、 2.每个生命周期我们应该做怎么样的处理:每个方法保留的时间有多久;那个方法是活动阻塞的,他没有做完,别的人做不了;那个方法让我们暂时回收内存...你的Activity应该在onCreate()方法里执行设置“全局”状态(如定义布局)。并在onDestroy()方法里释放所有剩余资源。...例如,如果你的活动有一个线程在后台运行下载网络数据,它可以在onCreate()中创建该线程【一般在onStart里面创建更好子线程,主要是onCreate()只有5秒的响应时间】,然后在onDestroy...1、onCreate 最重要是在里面调用setContentView,还可以在里面初始化各控件、设置监听、并初始化一些全局的变量。...即便是内存不足,被回收了,再次Recreate的话,又是一次新的生命周期的开始,又会执行onCreate方法。
本文为Android的Activity相关知识整理,具体参考了 《Android开发艺术探索》第一章 《Android群英传》第八章 《第一行代码》第二章 Activity是与用户交互的第一接口。...在要退出的Activity中转到主Activity中,从而将主Activity之上的Activity都清除 Intent intent = new Intent(this, MainActivity.class...; } 4.2 利用专门的集合类对所有的活动进行管理 创建一个ActivityCollector 类作为活动管理器。...List作为存放活动的列表。...ActivityCollector里存放的活动要随着onCreate而添加,随着onDestory而销毁。
Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。...activity回传数据给第一个activity 实验要求:编程实现具有“登录”按钮的主界面,点击“登录”按钮后打开另一个新的Activity,在新打开的Activity中输入的用户名、密码等个人信息,...// 如果希望在活动销毁的时候能够返回一个结果给上一个活动,就用startActivityForResult startActivityForResult(intent, 1); //...如果您的活动将noHistory设置为true,则永远不会调用此方法。...由于在一个活动中有可能调用startActivityForResult()方法去启动很多不同的活动,每一个活动返回的数据都会回调到onActivityResult()这个方法中,因此我们首先要做的就是通过
Activity 活动跳转(Java&Kotlin) 任何正式APP都不可能只有一个Activity,当有多个Activity时,怎么从一个Activity进入到另一个Activity呢?...Java //活动跳转,从MainActivity跳转到TestActivity,普通跳转 startActivity(new Intent(MainActivity.this,TestActivity.class...)); 如果把刚才Java里的代码复制到Kotlin里,会需要转译,转译后的Kotlin代码如下: Kotlin //活动跳转,从MainActivity跳转到TestActivity,普通跳转...所以Android允许在代码中手动设置启动表示,这样在不同时候调用startActivity方法就能运行特定的启动模式。...这样下次无论以何种方式启动该实例,也要走standard的完整流程 Intent.FLAG_ACTIVITY_CLEAR_TASK 该标志非常暴力,跳转到新页面时,栈中的原有实例都被情况,注意:该标志要结合
) { activity.finish(); } ondestory lists.remove(this); 3、发送特定广播: 在需要结束应用时,发送一个特定的广播,每个Activity收到广播后,关闭即可...Singleinstance 运行在另外的单独的任务栈里面 比方说在激活一个新的activity时候, 给intent设置flag Intent的flag添加FLAG_ACTIVITY_NEW_TASK...Android预定义了一系列的Action分别表示特定的系统动作。这些Action通过常量的方式定义在android.content. Intent中,以“ACTION_”开头。...在manifest和代码中如何注册和使 用 broadcast receiver 。 设置广播接收者的优先级,设置广播接受者的action名字 等… 详细见工程代码. 22....如果程序中存在对无用对象的引用,那么这些对象就会驻留内存,消耗内存,因为无法让垃圾回收器GC验证这些对象是否不再需要。如果存在对象的引用,这个对象就被定义为"有效的活动",同时不会被释放。
每个Android应用启动之后都会出现一个Splash启动界面,显示产品的LOGO、公司的LOGO或者开发者信息。...1.制作Splash界面 突出产品LOGO,产品名称,产品主要特色; 注明产品的版本信息; 注明公司信息或者开发者信息; 背景图片,亦可以用背景颜色代替; 2.处理后台资源 大多数的...,那么:启动界面SLEEP的时间=固定时间-预处理任务时间; 思路有两个,一个是用两个Activity来做,一个用来做启动画面,另一个是主页面;还可以用一个Activity来做,程序启动时显现启动画面...); 下面两行代码启动一个新的Activity,同时关闭当前Activity。...随后 Activity Manager 激活处于栈第二层的 Activity 并重新入栈,同时原 Activity 被压入到栈的第二层,从 Active 状态转到 Paused 状态。
从字面的意思去理解,Activity具有活动的意思,我们在应用中进行的操作都是集中在Activity上面完成,例如拨号、拍照、发送email、看地图。...Android创建与启动 以一个简单的Activity的创建与使用示说明: 创建 ?...并且你会看到 MainActivity 强制重写了 onCreate 方法,在 onCreate 中,通过 setContentView 为 Activity 设置我们自定义的页面布局文件。...我们可以在 MainActivity 中添加一个按钮,点击按钮跳转到 SecondActivity,然后在 SecondActivity 中添加两个按钮,点击一个按钮跳转到 MainActvity,在另一个按钮的点击事件中添加如下代码...当我们在 MainActvity 中点击按钮跳转到 SecondActivity ,当跳转到 SecondActivity 在点击第一个按钮跳转到 MainActivity ,不断重复这个操作。
从字面的意思去理解,Activity具有活动的意思,我们在应用中进行的操作都是集中在Activity上面完成,例如拨号、拍照、发送email、看地图。...Android创建与启动 以一个简单的Activity的创建与使用示说明: 创建 在Androd Studio 新建项目完成后,会自动创建一个 Java 文件,这个文件就是 Activity,因为它继承系统...并且你会看到 MainActivity 强制重写了 onCreate 方法,在 onCreate 中,通过 setContentView 为 Activity 设置我们自定义的页面布局文件。...我们可以在 MainActivity 中添加一个按钮,点击按钮跳转到 SecondActivity,然后在 SecondActivity 中添加两个按钮,点击一个按钮跳转到 MainActvity,在另一个按钮的点击事件中添加如下代码...当我们在 MainActvity 中点击按钮跳转到 SecondActivity ,当跳转到 SecondActivity 在点击第一个按钮跳转到 MainActivity ,不断重复这个操作。
领取专属 10元无门槛券
手把手带您无忧上云