美文网首页
面试前模拟

面试前模拟

作者: 今天也要努力呀y | 来源:发表于2020-03-13 11:53 被阅读0次
    • 介绍一下你的项目:
    1. 凉爽天气是一款天气预报的APP,如果是第一次进入应用,会首先进入选择地点的界面,选择地点的是一个fragment叫做chooseArea,有三个等级,省市县,对应的数据从服务器读取解析,保存在本地数据库,然后选择自己对应的地区.选择到县级之后会跳转到WeatherActivity界面,通过从choosearea传来的地点id,利用和风天气sdk进行数据查询,返回的数据利用sdk自带的解析方法和JSON解析获取数据,在界面上显示数据,并且把当前地点使用Shareperferences保存下来,下次打开应用时会直接进入该界面.为了界面好看还用了必应的每日一图作为背景.同时加入了后台服务,每八个小时更新一次.

    2.掌上图书馆是一款可以在手机上掌控图书馆的APP,在首页面上是RecyclerView列举的校园公告.每一个item显示的是公告的标题和时间,点击进去之后使用javascript将WebView上的内容显示出来,页面头和页面尾是javascript语句,中间主体部分是从图书馆官网上用Jsoup爬取下来的公告内容.在侧滑菜单中,有我的信息,点击我的信息,如果没有登录会进入登录界面,否则会跳到个人信息界面,在登录界面会返回ResultCode,为1就是登录成功,主界面显示自己的名字和头像,否则就显示未登录.

    3.暖暖闹钟是一款闹钟APP,主界面是用RecyclerView列举的闹钟,每一个闹钟的时间和标签都在Litepal数据库中保存下来.借助AlarmManager,通过调用Context.getSystemService()方法来获取实例的.第一个参数唤醒模式,获取到Calendar的时间,第三个是PendingIntent .然后到达时间跳转到广播接收器接收信息.

    • 安卓有几种基本布局
      LinearLayout
      RelativeLayout
      FrameLayout
      GridLayout
      AbsoluteLayout
      TableLayout

    • 简述安卓四大组件
      1.Activity
      服务是Android中执行程序后台运行的解决方案,不依赖与任何用户界面,但是依赖于进程,
      2.BroadCastReceiver
      3.Service
      4.ContentProvider

    • 如何使用intent传递对象
      实现序列化接口:
      1.Serializable
      2.Parcelable
      Serializable实现比较简单,会把整个对象序列化,所以效率不如Parcelable高

    • Activity之间数据回传:
      startActivityForResult传过去requestCode
      setResult传回resultcode

    • Activity的启动方式
      Standard
      每启动一个activity就会新建一个新的实例
      SingleTop
      首先判断启动的activity是否处于栈顶,处于栈顶直接复用,否则创建新的实例
      SingleTask
      保证某个Activity在整个应用程序中只有一个实例,如果存在实例就直接使用,并把上面的都出栈
      SingleInstance
      启动一个新的任务栈来管理Activity实例,在整个系统中只有一个

    • Handler
      首先在主线程中创建一个Handler对象,并重写handleMessage()方法,然后当子线程需要进行UI操作时,就创建一个Message对象,通过handle.sendMessage()发送出去,这条消息被送到MessageQueue中被等待处理,然后Looper从中取出,发送到handleMessage的方法中到主线程处理

    • 关于View
      1.OnMeasure():测量视图大小。从顶层父View到子View递归调用measure方法,measure方法又回调OnMeasure

    2.OnLayout():确定View位置。进行页面布局。从顶层父View向子View的递归调用view.OnLayout方法的过程,即父View根据上一步measure子View所得到的布局大小和布局参数,将子View放在合适的位置

    3.OnDraw():绘制视图.ViewRoot创建一个Canvas对象,然后调用OnDraw()

    • 活动的生命周期
      onCreate()->onStart()->onResume()->onPause()->onStop()->onRestart()->onDestroy()

    • 横竖屏切换时的Activity的生命周期
      不设置Activity的configChanges时,切屏时会重新调用各自的生命周期
      onSavedInstanceState()->onPause()->onStop()->onDestroy()->onCreate()->onStart()->onRestoreInstanceState()->onResume();
      可以通过重写onSavedInstanceState(Bundle) 销毁时保存信息.

    • 碎片的生明周期
      onAttach()->onCreate()->onCreateView->onActivityCreated()->onStart()->onResume()->onPause()->onStop()->onDestroyView()->onDestroy()->onDetach();
      绑定Fragment到activity,创建Fragment,创建Fragment的布局,Activity创建完成后回调此方法->可见不可交互状态->可见可交互->部分可见不可交互->不可见->销毁Fragment的布局->销毁Fragment->Fragment从Activity解绑

    • 服务的生命周期
      onCreate()->onStartCommand()->onDestroy();
      使用stopSelf停止
      onCreate()->onbind->onUnbind()->onDestroy();
      使用unbindService()停止

    • 保证服务不被杀死
      1.onStartCommand方法中,返回START_STICKY
      2.提升Service优先级
      3.当Service调用destroy()中,重新开启自己

    • 广播注册方式
      静态注册:
      系统运行一次就会注册到系统中,以后无需在运行也可以接收广播
      动态注册:
      代码中注册,代码运行时才生效

    • EventBus
      事件(Event)
      事件发布者(Publisher)
      事件订阅者(Subscriber)
      接收者所在的activity要注册和注销

    • ContentProvider
      内容提供器,是安卓四大组件之一,用于不同的程序之间实现数据共享,同时还能保证数据的安全性.每个ContentProvier都提供有一个URI,这个URI用于表示这个ContentProvider所提供的的数据.

    • SQLite常用操作
      onCreate()创建数据库时调用
      onUpgrade() 数据库升级时调用
      使用SQL语句操作SQLite

    相关文章

      网友评论

          本文标题:面试前模拟

          本文链接:https://www.haomeiwen.com/subject/eikgjhtx.html