- 介绍一下你的项目:
- 凉爽天气是一款天气预报的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
网友评论