zoukankan      html  css  js  c++  java
  • 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

    4.Activity启动方式

    • Intent
    • adb shell am指令

        am启动一个activity :  

          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 收到广播后,关闭 即可。 

        //给某个 activity 注册接受接受广播的意图 registerReceiver(receiver, filter) 

        //如果过接受到的是 关闭 activity 的广播 activity finish()掉

    • 递归退出 

        就调用 finish()方法 把当前的 在打开新的 Activity 时使用 startActivityForResult,然后自己加标志,在 onActivityResult 中处理,递归关闭。

    • 通过 intent 的 flag 来实现 intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)激活一个新的 activity。 此时如果该任务栈中已经有该 Activity,那么系统会把这个 Activity 上面的所有 Activity 干掉。其实相当于给 Activity 配置的启动模式为 SingleTop。
    • 记录打开的 Activity: 

        每打开一个 Activity,就记录下来。在需要退出时,关闭每一个 Activity 

      

    附录:

     activity生命周期:

     

  • 相关阅读:
    几个可以用到的正则表达式
    apache fileupload 文件上传,及文件进度设置获取
    Log4j日志根据配置输出到多个自定义文件
    spring3.2.2 remoting HTTP invoker 实现方式
    希望自己坚持住!
    tomcat线程一直处于RUNNABLE,不接受请求
    OM—>AR相关会计科目
    css画图
    Jquery 实现原理之 Ajax
    HTML、XHTML和HTML5区别与联系
  • 原文地址:https://www.cnblogs.com/slothccc/p/7384818.html
Copyright © 2011-2022 走看看