1 在Activity中使用Toast
(Toast是Android系统提供的一种提醒方式,可以使用它将一些短小的信息通知给用户,信息会在一段时间后自动消失,不会占用任何屏幕空间)
btn.setOnClickListener(v -> {
Toast.makeText(this, "Button clicked", Toast.LENGTH_LONG).show();
})
2 在Activity 中使用 Menu
首先在res目录新建(res - New - Directory),输入文件夹名称“menu”;再在文件夹menu下面新建(menu - New - Menu resource file)一个叫做“main”的菜单文件
打开main.xml文件
<item
android:id="@+id/add_item"
android:title="Add"/>
<item
android:id="@+id/remove_item"
android:title="Remove"/>
添加如上代码,android : title是给菜单项指定一个名称
切换到design看看效果:
然后我们到显示这个菜单的activity中将布局放到该界面中。
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
3 销毁一个Activity
可以通过按back键销毁,如果不希望如此,可以通过程序中的代码来操作。
可以调用Activity类提供的finish()方法
修改按钮监听器中的代码:
btn.setOnClickListener(v -> {
finish();
});
4 实现Activity之间的跳转
- 使用Intent进行跳转
- 显式Intent:通过提供目标应用的软件包名称或完全限定的组件类名来指定可处理Intent的应用
- 隐式Intent:不会指定特定的组件,而是声明要执行的常规操作,从而允许其他应用中的组件来处理
(1)显示Intent
btn.setOnClickListener(v -> {
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
});
因为我把<intent-filter>移到了SecondActivity下面,后续操作都是对SecondActivity进行操作,所以实际上设置了SecondActivity为主界面,跳转到MainAcitvity。
跳转到Main界面后,点击back键回到SecondActivity。
(2)隐式Intent
btn.setOnClickListener(v -> {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://www.baidu.com"));
startActivity(intent);
});
然后我觉得显示还是好懂的,我的理解是,手动强制执行
隐式的话,比较含蓄需要<activity>和<category>中的内容同时匹配,才能响应,属于模糊匹配。
然后我看的稀里糊涂的,就问了问ChatGPT3.5,she told me that:
与显式Intent不同,隐式Intent没有指定特定组件的名称,而是通过描述要执行的操作和数据类型来请求系统匹配合适的组件。Android系统会查找匹配隐式Intent的组件,并根据操作和数据类型来启动合适的组件。如果多个组件匹配相同的隐式Intent,系统会提示用户选择一个默认组件或每次都要求用户选择。
隐式Intent的使用场景包括打开网址、发送电子邮件、分享内容等。通过这种方式,开发者可以与其他应用程序进行集成,以实现更广泛的功能,而不需要知道或依赖特定组件的名称。
然后下面是我搜到的Intent的组成部分和常见系统动作取值:
(来源于:【Android】-- Intent(显式和隐式Intent)-CSDN博客)
5 Activity的生命周期
之前每次新生成的Activity都是叠加在原来的上面的,这些Activity按照打开顺序放在一个返回堆栈(back stack)中。如果按返回按钮,最新的Activity即会完成并从堆栈中退出。
Activity存在四个状态:运行状态、暂停状态(不处于栈顶,但仍然可见e.g.微信对话页面)、停止状态(不处于栈顶,且完全不可见)、销毁状态
生存期:
有7个回调方法:(码不动了,ChatGPT生成的)
有3个生存期:
完整生存期
可见生存期
前台生存期
6 Activity的启动模式
-
onCreate()
: 当Activity首次创建时调用。通常在这里进行初始化和设置布局。 -
onStart()
: 在活动可见但不在前台时调用。这是活动进入可见状态的地方。 -
onResume()
: 当活动进入前台并获得焦点时调用。通常在这里执行与用户交互相关的操作,例如启动动画或播放音频。 -
onPause()
: 当活动失去焦点但仍然可见时调用,通常是因为其他活动部分遮挡了它。在这里,通常保存临时数据或释放资源。 -
onStop()
: 当活动不再可见时调用,通常是因为它被另一个活动完全覆盖。在这里执行清理操作或释放更多资源。 -
onDestroy()
: 当活动即将销毁时调用。在这里执行最终的清理操作,例如取消注册广播接收器或释放大量内存。 -
onRestart()
: 当活动重新从停止状态进入活动状态时调用。这是在用户返回到该活动时的地方。
(1)standard启动模式
是默认启动模式,每启动一个新的Activity,它就会放到栈顶的位置。系统不会检查这个Activity是否已经在返回栈中存在,每次启动都会创建一个该Activity的新实例
(2)singleTop启动模式
在启动Activity时,如果栈顶已经是该Activity,则直接使用它,不会再创建新的Activity实例
(3)singleTask启动模式
启动Activity时,会先在返回栈中检查是否存在其实例:
如果发现已经存在则直接使用该实例,并把在这个Activity之上的所有其他Activity统统出栈
如果没有发现就会创建一个新的Activity实例
(4)singleTask启动模式
会启用一个新的返回栈来管理这个Activity,允许其他程序调用(共享)的Activity,并且会有一个单独的返回栈来管理这个Activity
学不动了,后面学的略(hen)水
就酱~