admin 管理员组文章数量: 1184232
- 设置 Activity 的 android:configChanges="orientaion|keyboardHidden"时切换横屏和竖屏都会重新调用>一次生命周期。
*设置 Activity 的 android:configChanges="orientation|screenSize"时不会重新调用 Activity 的生命周期,>但是会调用 onConfigurationChanges() 方法。
3.3、activity的startActivity和context的startActivity区别?
(1)、从Activity中启动新的Activity时可以直接mContext.startActivity(intent)就好
(2)、如果从其他Context中启动Activity则必须给intent设置Flag:
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) ;
mContext.startActivity(intent);
3.4、怎么加速启动Activity?
1、onCreate() 中不执行耗时操作 把页面显示的 View 细分一下,放在 AsyncTask 里逐步显示,用 Handler 更好。这样用户的看到的就是有层次有步骤的一个个的 View 的展示,不会是先看到一个黑屏,然后一下显示所有 View。最好做成动画,效果更自然。
2、利用多线程的目的就是尽可能的减少 onCreate() 和 onReume() 的时间,使得用户能尽快看到页面,操作页面。
3、减少主线程阻塞时间。
4、提高 Adapter 和 AdapterView 的效率。
5、优化布局文件。
3.5、直接在Activity中创建一个thread跟在service中创建一个thread之间的区别?
- 在Activity中被创建:该Thread的就是为这个Activity服务的,完成这个特定的Activity交代的任务,主动通知该Activity一些消息和事件,Activity销毁后,该Thread也没有存活的意义了。
- 在Service中被创建:这是保证最长生命周期的Thread的唯一方式,只要整个Service不退出,Thread就可以一直在后台执行,一般在Service的onCreate()中创建,在onDestroy()中销毁。所以,在Service中创建的Thread,适合长期执行一些独立于APP的后台任务,比较常见的就是:在Service中保持与服务器端的长连接。
3.6、Activity 与 Service 通信的四种方式
1、Binder
2、Intent
3、接口 Interface
4、Broadcast 广播接收
3.7、Activity 之间的几种通信方式
1、Intent
2、借助类的静态变量
3、借助全局变量/Application
4、借助外部工具
5、 借助 SharedPreference
6、使用 Android 数据库 SQLite
7、 赤裸裸的使用 File
8、Android 剪切板
9、借助 Service
4.Service
4.1、服务启动一般有几种,服务和activty之间怎么通信,服务和服务之间怎么通信
方式:
1、startService:
onCreate()—>onStartCommand() —> onDestory()
如果服务已经开启,不会重复的执行onCreate(), 而是会调用onStartCommand()。一旦服务开启跟调用者(开启者)就没有任何关系了。 开启者退出了,开启者挂了,服务还在后台长期的运行。 开启者不能调用服务里面的方法。
2、bindService:
onCreate() —>onBind()—>onunbind()—>onDestory()
bind的方式开启服务,绑定服务,调用者挂了,服务也会跟着挂掉。 绑定者可以调用服务里面的方法。
通信:
1、通过Binder对象。
2、通过broadcast(广播)。
4.2、如何保证Service不被杀死?
Android 进程不死从3个层面入手:
A.提供进程优先级,降低进程被杀死的概率
方法一:监控手机锁屏解锁事件,在屏幕锁屏时启动1个像素的 Activity,在用户解锁时将 Activity 销毁掉。
方法二:启动前台service。
方法三:提升service优先级:
在AndroidManifest.xml文件中对于intent-filter可以通过android:priority = "1000"这个属性设置最高优先级,1000是最高值,如果数字越小则优先级越低,同时适用于广播。
B. 在进程被杀死后,进行拉活
方法一:注册高频率广播接收器,唤起进程。如网络变化,解锁屏幕,开机等
方法二:双进程相互唤起。
方法三:依靠系统唤起。
方法四:onDestroy方法里重启service:service + broadcast 方式,就是当service走ondestory的时候,发送一个自定义的广播,当收到广播的时候,重新启动service;
C. 依靠第三
版权声明:本文标题:2020上半年百度Android岗(初级到高级)面试真题全收录+解析,备战金九银十!(中篇) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1754748159a3034995.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论