1. onstart时activity可见吗:
onStart
状态表示Activity
可见,而可见表示的意思是Activity
被创建出来了,被用户所知晓,但是不在前台,还没绘制界面,所以无法交互。也可以意指其所在的进程为可见进程。
2. Service和Activity的区别
Service:
- 后台运行:Service 通常用于在后台执行某些任务,不需要与用户直接交互。
- 无界面:Service 通常没有用户界面。
- 生命周期:Service 的生命周期与用户交互无关,即使应用被切换到后台或者用户不再使用应用,Service 仍然可以运行。
- 前台与后台:Service 可以作为前台服务运行,这样即使应用在后台,它也能继续执行任务。但前台服务需要显示一个持续性的通知。
- 资源占用:由于 Service 可以在后台长时间运行,可能会占用系统资源。因此,需要谨慎管理其生命周期。
Activity:
- 用户交互:Activity 主要用于与用户交互。
- 有界面:Activity 通常有一个与之关联的用户界面。
- 生命周期:Activity 的生命周期与用户交互密切相关。例如,当用户打开新的 Activity 或者按下“返回”按钮时,当前 Activity 可能会被暂停或销毁。
- 不能在后台运行:当用户不再与 Activity 交互(例如切换到其他应用),该 Activity 会进入暂停状态,并可能被系统回收。
- 资源占用:通常情况下,当 Activity 不可见时,它会被暂停,这样可以更有效地利用系统资源。
3. android内存不足会对Activity以及Service做什么操作?
1.优先回收独立的Activity
2.再回收处于“Stopped”状态的其他类型Activity(在背景等待的Activity)。很久没有使用的Activity优先回收(比较官方的说法是“根据LRU算法...”)
3.还不够?回收service进程
4.快不行啦,关掉可见的Activity进程
5.关闭当前的Activity
4. Handler的用途:
实现异步任务、定时任务、线程间通信;
5. Glide的优点:
简单易用的API
高效的图片加载和缓存机制
支持动画和自定义转换
与Activity和Fragment生命周期集成
强大的图片解码能力
6. okHttp最大线程的数目怎么设置
CPU密集型任务:CPU核心数 + 1(利用CPU资源,同时留一个线程处理其他系统任务)
IO 密集型任务:CPU核数 /(1-阻塞系数)
7. okHttp追加通用参数
创建自定义拦截器
public class CommonParamsInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request originalRequest = chain.request();
HttpUrl originalHttpUrl = originalRequest.url();
// 在这里添加通用参数
HttpUrl url = originalHttpUrl.newBuilder()
.addQueryParameter("commonParam1", "value1")
.addQueryParameter("commonParam2", "value2")
.build();
// 构建新的请求
Request request = originalRequest.newBuilder()
.url(url)
.build();
return chain.proceed(request);
}
}
8. 对安卓组件化和模块化的理解
在Android中,组件化开发是一种将整个应用拆分为多个相互独立、可插拔的组件的软件架构。这种架构的主要目标是提高代码的可维护性、可扩展性,以及多人协作的效率。在组件化开发中,通常有主工程组件、业务层组件、功能层组件和基础层组件。