寸阳分阴须爱惜,休负春色与时光。这篇文章主要讲述Android 四大组件------Activity相关的知识,希望能为你提供帮助。
一.定义软件打开的主activity当用户点开软件时,系统会默认调用app中声明为“launch”(或者“main”)的activity中的onCreate()方法。我们一般在androidManifest.xml中定义主activity。
< activity android:name=".MainActivity" android:label="@string/app_name"> < intent-filter> < action android:name="android.intent.action.MAIN" /> < category android:name="android.intent.category.LAUNCHER" /> < /intent-filter> < /activity>
关于activity相关的面试题:1.如果新Activity是透明主题时,旧Activity会不会走onStop
不会!旧Activity处于Paused状态。
2.TaskAffinity 是什么?
每个activity都有taskAffinity属性,这个属性指出了它希望进入的Task。标识Activity任务栈名称的属性:TaskAffinity,默认为应用包名。
3.Android Service与Activity之间通信方式有哪些?
- Binder
- 广播
- EventBus
- Intent
- adb shell am指令
adb shell am start com.example.fuchenxuan/.MainActivity
am发送一个广播,使用action:
adb shell am broadcast -a magcomm.action.TOUCH_LETTER
5.如何获取当前屏幕Activity?
使用ActivityLifecycleCallbacks,详细。
6.Activity的四种启动模式?
启动模式有4种,分别为standard、singleTop、singleTask、singleInstance;
- standard:每次激活Activity时(startActivity),都创建Activity实例,并放入任务栈;
- singleTop:如果某个Activity自己激活自己,即任务栈栈顶就是该Activity,则不需要创建,其余情况都要创建Activity实例;
- singleTask:如果要激活的那个Activity在任务栈中存在该实例,则不需要创建,只需要把此Activity放入栈顶,并把该Activity以上的Activity实例都pop;
- singleInstance:如果应用1的任务栈中创建了MainActivity实例,如果应用2也要激活MainActivity,则不需要创建,两应用共享该Activity实例;
文章图片
7.如何退出 Activity?如何安全退出已调用多个 Activity 的 Application?
退出单个activity:
- 通常情况用户退出一个 Activity 只需按返回键,我们写代码想退出 activity 直接调用 finish()方法就行。
- 杀死该进程:killprocess(Process.mid)
- 终止正在运行的虚拟机:system.exit()
- 制造抛异常导致整个程序退出
- 发送特定广播:
//给某个 activity 注册接受接受广播的意图 registerReceiver(receiver, filter)
//如果过接受到的是 关闭 activity 的广播 activity finish()掉
- 递归退出
- 通过 intent 的 flag 来实现 intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)激活一个新的 activity。 此时如果该任务栈中已经有该 Activity,那么系统会把这个 Activity 上面的所有 Activity 干掉。其实相当于给 Activity 配置的启动模式为 SingleTop。
- 记录打开的 Activity:
附录: activity生命周期:
文章图片
文章图片
【Android 四大组件------Activity】
推荐阅读
- Android(图解四种启动模式 及 实际应用场景解说)
- android之SlideMenu双向滑动
- Android EditText+ListPopupWindow实现可编辑的下拉列表
- 新知食APP架构分析--北京食物科技有限公司旗下产品
- SimpleUrlHandlerMapping
- 202. Happy Numberleetcodejava,hashSet,算法
- .NET轻量级ORM组件Dapper修炼手册
- Windows文件复制软件合集(10种最佳免费TeraCopy替代品)
- Windows最佳音乐制作软件推荐(免费FLStudio代品合集)