总结了一些常见的Android面试题,内容会随着不断学习陆续添加。答案有误地方希望大家能够指正 ,同一时候希望大家一起补充总结很多其它常见问题。谢谢^_^1. 简述Activity的生命周期 2. 请简单说下对广播接收者有哪些了解 3. view怎样刷新?简述什么是双缓冲? 4、AIDL的全称是什么?怎样工作?能处理哪些类型的数据? 5、java中怎样引用本地语言 6、谈谈Android的IPC(
转载
2023-08-08 17:24:04
51阅读
1.ANR application not responding在主线程这做了耗时操作。 主要原因是:应用程序的响应性是Activity Manager和WindowManager系统服务监视的。(1)主线程被IO操作阻塞; (2)主线程中存在耗时的计算; 以下这些操作是发生在主线程中:Acitivity的所有生命周期回调都是执行在主线程Service默认是执行在主线程。BroadcastRece
转载
2023-06-28 15:58:20
115阅读
## Android 主线程更新数据库实现流程
### 流程步骤
下面是实现 Android 主线程更新数据库的流程步骤:
| 步骤 | 操作 |
| --- | --- |
| 步骤1 | 在主线程中创建一个数据库操作的Handler对象 |
| 步骤2 | 在子线程中发送一个消息给主线程的Handler对象 |
| 步骤3 | 在主线程的Handler中处理消息,执行数据库操作 |
|
原创
2023-09-30 05:02:21
58阅读
Android多线程Android中的多线程本质上也是Java的多线程,同时添加了一些不同的特性和使用的场景。其中,最主要的一个区别就是Android中主线程和子线程中的区分,Android中的主线程是UI线程,负责运行四大组件并与用户实现交互,需要保持较高的反应速度,所以主线程不允许进行耗时的操作(比如说网络请求和访问),否则容易出现ANR现象,子线程则负责处理 一些耗时的任务,而如果子线程中想
转载
2023-08-23 22:16:42
134阅读
大家好,今天来介绍一下SQLite的相关知识,并结合Java实现对SQLite数据库的操作。SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎。它支持大多数的SQL92标准,并且可以在所有主要的操作系统上运行。SQLite由以下几个部分组成:SQL编译器、内核、后端以及附件。SQLite通过利用虚拟机和虚拟数据库引擎(VDBE),是调试、修改和扩 展SQLite的内核变得
android - 从另一个线程在主线程中运行代码在android服务中,我创建了一些用于执行某些后台任务的线程。我有一种情况,线程需要在主线程的消息队列上发布某些任务,例如Handler。有没有办法获得主线程Handler并从我的其他线程发布Message/Runnable?谢谢,12个解决方案525 votes注意:这个答案引起了很多关注,我需要更新它。 自从原始答案发布以来,@ dzeike
Android的线程和线程池主线程和子线程Android沿用Java的线程模型,分为主线程和子线程,其中主线程主要处理和界面相关的事情,也叫UI线程。主线程的作用是运行四大组件以及处理它们和用户的交互,而子线程的作用则是执行耗时任务,比如网络请求、IO操作等等。由于Android的特性,如果在主线程中去执行耗时操作那么会导致程序无法及时响应可能出现ANR现象,因此耗时操作必须放在子线程中去执行。A
转载
2024-02-28 12:39:55
44阅读
前言:1.对Thread.sleep(long duration)的认知。 由于CPU分配的每个线程的时间片极为短暂(一般为几十毫秒),所以,CPU通过不停地切换线程执行,这样就给程序员一种错觉,以为多个线程是在同时执行。sleep就是正在执行的线程主动让出CPU,CPU去执行其他线程,在sleep指定的时间过后,
转载
2023-07-06 22:33:23
209阅读
前言PS:安卓的数据库实验如果不下载一个轻量级的数据库软件很难找bug,所以可以先找到这么一个软件,下载下来,https://pc.qq.com/detail/7/detail_163887.html 我们创建一个数据库然后在里面创建了一个表,那么在安卓的资源器中可以找到我们所创建的文件,我们可以这样找到,启动模拟器(也就是运行代码),然后右下角的Device File Exploer就会有数据,
初学android一段时间,经常我们会听到说不能在子线程更新UI,不能在主线程执行耗时操作,但是谁知道这到底是为什么呢?难道子线程一点UI都不能操作吗?若在子线程操作UI会出现什么问题呢?还有android(java)为什么要有handler这种机制呢?========================================================================下
知乎上看到这样一个问题Android中为什么主线程不会因为Looper.loop()里的死循环卡死?,于是试着对Handler源码重新看了一下,其实Android的消息机制是Pipe+epoll(了解epoll),有消息时则依次执行,没消息时调用epoll.wait等待唤醒;由于Android中生命周期、UI绘制都是动过Handler实现的,因此自然不会发生阻塞卡死。Android为了保证主线程在
转载
2023-07-31 23:15:40
165阅读
首先 先 明白一个问题:什么是ANRApplication Not Responding,意思是”应用没有响应“以前我的理解就是 “在主线程做了耗时操作”就会引起ANR,现在我觉得我是错误的,ANR的意思是应用没有响应,耗时操作实际上 并不一定会导致没有响应,我对没有响应的理解是有人(事件或操作)发出了一个请求,但是主线程没有对这个人进行反馈(可能是没时间、可能是不想理、可能是手被绑住了没有办法理
转载
2023-08-29 16:58:51
303阅读
andriod提供了 Handler 和 Looper 来满足线程间的通信。例如一个子线程从网络上下载了一副图片,当它下载完成后会发送消息给主线程,这个消息是通过绑定在主线程的Handler来传递的。 在Android,这里的线程分为有消息循环的线程和没有消息循环的线程,有消息循环的线程一般都会有一个Looper,这个事android的新 概念。我们的主线
转载
2023-09-02 13:04:36
115阅读
结论初始化后,所有主线程做的事情都是在looper.loop()中完成的,因为主线程不做其他事,所以不会卡死基于linux的epoll模型,当主线程没有message消费时,会进入睡眠状态(简单理解),等到有新的可消费的Message时,再转为活跃状态处理Message(类似一个事件回调)。主线程在睡眠状态会让出CPU,并不是一直不停在执行循环。如有兴趣了解下epoll机制可以看看这篇文章:NIO
转载
2023-11-08 08:56:17
180阅读
首先 先 明白一个问题:什么是ANRApplication Not Responding,意思是”应用没有响应“以前我的理解就是 “在主线程做了耗时操作”就会引起ANR,现在我觉得我是错误的,ANR的意思是应用没有响应,耗时操作实际上 并不一定会导致没有响应,我对没有响应的理解是有人(事件或操作)发出了一个请求,但是主线程没有对这个人进行反馈(可能是没时间、可能是不想理、可能是手被绑住了没有办法理
转载
2023-08-17 15:37:03
222阅读
首先 先 明白一个问题:什么是ANRApplication Not Responding,意思是”应用没有响应“以前我的理解就是 “在主线程做了耗时操作”就会引起ANR,现在我觉得我是错误的,ANR的意思是应用没有响应,耗时操作实际上 并不一定会导致没有响应,我对没有响应的理解是有人(事件或操作)发出了一个请求,但是主线程没有对这个人进行反馈(可能是没时间、可能是不想理、可能是手被绑住了没有办法理
转载
2023-07-31 20:15:33
156阅读
当启动一个apk应用程序的时候,Android会开启一个主线程(UI线程),由于主线程是非线程安全,当我们需要在主线程中操作大数据或者联网等这些耗时的操作时,会影响到Android UI的显示并且会出现假死状态,这对用户的体验来说是很不乐观的。因此,我们需要把那些耗时的操作交给另外一个线程来处理,子线程将处理的结果返回给主线程,主线程根据得到的数据作出相应的操作。Handler就实现了
转载
2023-06-28 15:57:34
414阅读
# 如何实现 Android 主线程和子线程通信
## 概述
在 Android 开发中,主线程(UI 线程)负责处理 UI 操作,而子线程负责执行耗时操作,为了避免在主线程中执行耗时操作导致界面卡顿,我们通常需要在子线程中进行耗时操作,然后通过一些方式将结果传递给主线程进行展示。本文将介绍如何实现 Android 主线程和子线程之间的通信。
## 流程
下面是实现 Android 主线程和子
原创
2024-05-25 05:15:10
496阅读
一 什么是进程和线程?进程和线程的区别?进程是资源分配的最小单元,线程是程序执行的最小单元(进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位)进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源。 而线程是共享进程中的数据
转载
2024-06-19 15:16:01
82阅读
在android的设计思想中,为了确保用户顺滑的操作体验。一些耗时的任务不能够在UI线程中运行,像访问网络就属于这类任务。因此我们必须要重新开启一个后台线程运行这些任务。然而,往往这些任务最终又会直接或者间接的需要访问和控制UI控件。例如访问网络获取数据,然后需要将这些数据处理显示出来。就出现了上面所说的情况。原本这是在正常不过的现象了,但是android规定除了UI线程外,其他线程都不可以对那
转载
2023-08-22 20:16:30
66阅读