HNUST湖南科技大学-安卓Android期中复习
使用说明:除了选择判断就看习题外,推荐重点复习三四章多复习案例,这里应该是编程空题,把界面控件、活动单元熟悉一下。第五章(数据存储方式,尤其是文件存储)、第六章(重点内容提供者)、第八章(服务生命周期、启动方式的区别),我觉得只会这三章只会出简答题,应该是一章一道。然后论述题一般就是谈理解,聊未来,系统之间的区别之类的
参考参考参考,仅供参考!!!不要拿这个当作唯一资料!多看书多看书多看书!如果有更新会放评论区!
最后,祝大家考试顺利,全部通过!!!
- 判断题
- Dalvik虚拟机是Google公司设计的用于Android平台的虚拟机。(√)
- Android应用程序的主要语言是java。(√)
- Android采用分层结构,分别是应用程序层、应用程序框架层、核心类库和Linux内核。(√)
- 第三代移动通信技术(3G)包括 TD-LTE和FDD-LTE两种制式。(×)TD-LTE 和 FDD-LTE 是 4G 技术
- Android程序中,Log.e()用于输出警告级别的日志信息。(×)Log.e() 输出**错误级别(Error)**的日志
- 每个Dalvik虚拟机实例都是一个独立的进程空间,并且每个进程之间不可以通信。(×)不同的 Dalvik 虚拟机实例是独立进程空间,但可以通过 IPC 方式通信,如 Binder
- ViewGroup是盛装界面控件的容器。(√)
- 如果在帧布局FrameLayout中放入3个所有属性都相同的按钮,那么能够在屏幕上显示的是第1个被添加的按钮。(×)
- Android中的布局文件通常放在res/layout文件夹中。(√)
- TableLayout继承自LinearLayout,因此它完全支持LinearLayout所支持的属性。(×)TableLayout 没有完全继承 LinearLayout 的所有特性
- LinearLayout布局中的android:layout_weight属性用于设置布局内控件所占的权重。( √)
- Android的控件样式,每一个XML属性都对应一个Java方法。(√ )
- 当指定RadioButton按钮的android:checked属性为true时,表示未选中状态。( ×)表示选中状态
- AlertDialog对话框能够直接通过new关键字创建对象。(× )AlertDialog.Builder 创建
- Toast是Android系统提供的轻量级信息提醒机制,用于向用户提示即时消息。(√ )
- ListView列表中的数据是通过数据适配器加载的。( √)
- 如果Activity不设置启动模式,则默认为standard。( √)
- Fragment与Activity的生命周期方法是一致的。(× )生命周期相似但不完全一致
- 如果想要关闭当前的Activity,可以调用Activity提供的finish()方法。( √)
- <intent-filter>标签中间只能包含一个action属性。( ×)多个
- 默认情况下,Activity的启动方式是standard。( √)
- SQLite是Android自带的一个轻量级的数据库,支持基本SQL语法。(√ )
- Android中的文件存储方式,分为内部存储方式和外部存储方式。(√ )
- 使用openFileOutput()方式打开应用程序的输出流时,只需要指定文件名。( ×)还需要模式参数
- 当Android SDK版本低于23时,应用程序想要操作SD卡数据,必须在清单文件中添加权限。(√ )
- SQLiteDatabase类的update()方法用于删除数据库表中的数据。(× )更新数据
- SQLite数据库的事务操作满足原子性、一致性、隔离性和持续性。( √)
- Uri主要有三部分组成,分别是scheme、authority和path。(√ )
- 内容观察者ContentObserver用于观察指定URI代表的数据的变化。(√ )
- 内容提供者主要功能是实现跨程序共享数据的功能。( √)
- Android中通过内容解析者手机通讯录数据库的内容时,不需要加入读取手机通讯录的权限。(× )需要添加权限
- Android系统的UriMatcher类用于匹配Uri。(√ )
- Broadcast表示广播,它是一种运用在应用程序之间传递消息的机制。(√ )
- 在清单文件注册广播接收者时,可在<intent-filter>标签中使用priority属性设置优先级别,属性值越大优先级越高。( √)
- 有序广播的广播效率比无序广播更高。(× )有序广播比无序广播效率低,但可以按优先级处理
- 动态注册的广播接收者的生命周期依赖于注册广播的组件。( √)
- Android中广播接收者必须在清单文件里面注册。( ×)广播接收者既可以静态注册(清单文件),也可以动态注册
- Service服务是运行在子线程中的。( ×)Service 默认运行在主线程,需自行创建子线程处理耗时操作
- 不管使用哪种方式启动Service,它的生命周期都是一样的。(× )不同启动方式有不同的生命周期
- 使用服务的通信方式进行通信时,必须保证服务是以绑定的方式开启的,否则无法通信。( ×)只有使用绑定方式的服务才支持通信,但不代表服务不能通信
- 一个组件只能绑定一个服务。(× )多个组件可以绑定同一个服务
- 远程服务和本地服务都运行在同一个进程中。(× )远程服务运行在不同进程
- HttpURLConnection用于发送HTTP请求和获取HTTP响应。(√ )
- Android中的WebView控件是专门用于浏览网页的,其使用方法与其他控件一样。( √)
- Android中要访问网络,必须在AndroidManifest.xml中注册网络访问权限。(√ )
- HttpURLConnection是抽象类,不能直接实例化对象,需要使用URL的openConnection()方法获得。(√ )
- 使用HttpURLConnection进行HTTP网络通信时,GET方式发送的请求只能发送大小在1024个字节内的数据。(× )GET 方法理论上没有大小限制,但 URL 长度有服务器限制,不是固定 1024 字节
- Android内置的浏览器使用的是WebView引擎。(√ )
- 选择题
1. Dalvik虚拟机是基于( C)的架构。
A. 栈 B. 堆 C. 寄存器 D. 存储器
2.Android项目中的主题和样式资源,通常放在哪个目录下?( C)
- res/drawable B. res/layout C. res/values D. assets
3.下列关于AndroidManifest.xml文件的说法中,错误的是(D )
A. 它是整个程序的配置文件
B. 可以在该文件中配置程序所需的权限
C. 可以在该文件中注册程序用到的组件
D. 该文件可以设置UI布局
4.Dalvik虚拟机属于Android系统架构中的哪一层?(C )
A. 应用程序层 B. 应用程序框架层
C. 核心类库层 D. Linux内核层
5.Android中短信、联系人管理、浏览器等属于Android系统架构中的哪一层?(A )
A. 应用程序层 B. 应用程序框架层
C. 核心类库层 D. Linux内核层
6.下列属性中,用于设置线性布局方向的是( A )。
A.orientation B.gravity C.layout_gravity D.padding
7.下列选项中,不属于Android布局的是( C)。
A.FrameLayout B.LinearLayout C.Button D.RelativeLayout
8.帧布局FrameLayout是将其中的组件放在自己的哪个位置?( A)
A.左上角 B.右上角 C.左下角 D.右下角
9.对于XML布局文件,android:layout_width属性的值不可以是什么?( D)
A.match_parent B.fill_parent
C.wrap_content D.match_content
10.下列关于RelativeLayout的描述,正确的是( C)。
A.RelativeLayout表示绝对布局,可以自定义控件的x、y的位置
B.RelativeLayout表示帧布局,可以实现标签切换的功能
C.RelativeLayout表示相对布局,其中控件的位置都是相对位置
D.RelativeLayout表示表格布局,需要配合TableRow一起使用
11.在XML布局中定义了一个Button,决定Button按钮上显示文字的属性是(B)
A.android:value B.android:text
C.android:id D.android:textvalue
12.下列选项中,哪个用于设置TextView中文字显示的大小?( C)
A.android:textSize=”18”
B.android:size=”18”
C.android:textSize=’18sp’
D.android:size=”18sp”
13.使用EditText控件时,当文本内容为空时,如果想做一些提示,那么可以使用的属性是(D )
A.android:text B.android:background
C.android:inputType D.android:hint
14.为了让一个ImageView显示一张图片,可以通过设置的属性是( A)
A.android:src B.android:background
C.android:img D.android:value
15.下列关于ListView的说法中,正确的是( C)
A.ListView的条目不能设置点击事件
B.ListView不设置Adapter也能显示数据内容
C.当数据超出能显示范围时,ListView自动具有可滚动的特性
D.若ListView当前能显示10条,一共有100条数据,则产生了100个View
16.CheckBox被选择的监听事件通常使用以下哪个方法(B)?
A.setOnClickListener B.setOnCheckedChangeListener
C.setOnMenuItemSelectedListener D.setOnCheckedListener
17.当使用EditText控件时,能够使文本框设置为多行显示的属性是(A )
A.android:lines B.android:layout_height
C.android:textcolor D.android:textsize
18.下列关于AlertDialog的描述,错误的是(A)
A.使用new关键字创建AlertDialog的实例
B.对话框的显示需要调用show方法
C.setPositiveButton方法是用来设置确定按钮的
D.setNegativeButton方法是用来设置取消按钮的
19.下列选项中,不属于Android四大组件的是(C )。
A.Service B.Activity C.Handler D.ContentProvider
20.下列关于Android中Activity管理方式的描述中,正确的是( B)。
A.Android以堆的形式管理Activity
B.Android以栈的形式管理Activity
C.Android以树的形式管理Activity
D.Android以链表的形式管理Activity
21.下列选项中,哪个不是Activity生命周期方法( B)。
A.onCreate() B.startActivity() C.onStart() D.onResume()
22.下列方法中,哪个是启动Activity的方法(A )。
A.startActivity() B.goToActivity() C.startActivityResult() D.以上都是
23.下列关于Intent的描述中,正确的是(B )。
A.Intent不能够实现应用程序间的数据共享
B.Intent可以实现界面的切换,还可以在不同组件间直接进行数据传递
C.使用显式Intent可以不指定要跳转的目标组件
D.隐式Intent不会明确指出需要激活的目标组件,所以无法实现组件之间的数据跳转
24.下列关于SharedPreferences存取文件的描述中,错误的是(C )。
A.属于移动存储解决方式
B.SharedPreferences处理的就是key-value对
C.读取xml的路径是/sdcard/shared_prefs
D.文本的保存格式是xml
25.下列选项中,不属于getSharedPreferences方法的文件操作模式参数是(B )。
A.Context.MODE_PRIVATE
B.Context.MODE_PUBLIC
C.Context.MODE_WORLD_READABLE
D.Context.MODE_WORLD_WRITEABLE
26.下列方法中,(B )方法是sharedPreferences获取其编辑器的方法?
A.getEdit() B.edit() C.setEdit() D.getAll
27.Android对数据库的表进行查询操作时,会使用SQLiteDatabase类中的( C)方法?
A.insert() B.execSQL() C.query() D.update()
28.下列关于SQLite数据库的描述中,错误的是(C )
A.SqliteOpenHelper类有创建数据库和更新数据库版本的的功能。
B.SqliteDatabase类是用来操作数据库的。
C.每次调用SqliteDatabase的getWritableDatabase方法时,都会执行SqliteOpenHelper的onCreate()方法。
D.当数据库版本发生变化时,会调用SqliteOpenHelper的onUpgrade()方法更新数据库。
29.下列初始化SharedPreferences的代码中,正确的是(D )
A.SharedPreferences sp = new SharedPreferences();
B.SharedPreferences sp = SharedPreferences.getDefault();
C.SharedPreferences sp = SharedPreferences.Factory();
D.SharedPreferences sp = getSharedPreferences();
30.如果一个应用程序想要访问另外一个应用程序的数据库,那么需要通过(C)实现。
A.BroadcastReceiver B.Activity C.ContentProvider D.AIDL
31.下列方法中,哪个方法能够得到ContentProvider的实例对象。(B )
A.new ContentResolver() B.getContentResolver()
C.newInstance() D.ContentUris.newInstance()
32.自定义内容观察者时,需要继承的类是( B)。
A.BaseObserver B.ContentObserver C.BasicObserver D.DefalutObserver
33.查询手机系统短信时,内容提供者对应的Uri为( C)。
A.Contacts.Photos.CONTENT_URI
B.Contacts.People.CONTENT_URI
C.“content://sms/”
D.Media.EXTERNAL_CONTENT_URI
34.下列关于ContentProvider的描述,错误的是(D )
A.ContentProvider 是一个抽象类,只有继承后才能使用
B.ContentProvider只有在AndroidManifest.xml文件中注册后才能运行
C.ContentProvider为其他应用程序提供了统一的访问数据库的方式
D.以上说法都不对
35.下列选项中,关于广播类型的说法,错误的是( BC)(多选)
A、Android中的广播类型分有序广播和无序广播
B、无序广播是按照一定的优先级进行接收
C、无序广播可以被拦截,可以被修改数据
D、有序广播按照一定的优先级进行发送
36.广播机制作为Android组件间的通信方式,使用的场景有哪些( ABCD)(多选)
A、在同一个APP内部的同一组件内进行消息通信
B、不同APP的组件之间进行消息通信
C、在同一个APP内部的不同组件之间进行消息通信(单个进程)
D、在同一个APP具有多个进程的不同组件之间进行消息通信
37.如果通过bindService方式开启服务,那么服务的生命周期是(C )
A.onCreate()→onStart()→onBind()→onDestroy()
B.onCreate()→onBind()→onDestroy()
C.onCreate()→onBind ()→onUnBind()→onDestroy()
D.onCreate()→onStart ()→onBind ()→onUnBind()→onDestroy()
38.下列关于Service服务的描述中,错误的是( D)
A.Service是没有用户可见的界面,不能与用户交互
B.Service可以通过Context.startService()来启动
C.Service可以通过Context.bindService()来启动
D.Service无需在清单文件中进行配置。
39.下列关于Service的方法描述,错误的是(D )
A.onCreate()表示第一次创建服务时执行的方法
B.调用startService()方法启动服务时执行的方法是onStartCommand()
C.调用bindService()方法启动服务时执行的方法是onBind()
D.调用startService ()方法断开服务绑定时执行的方法是onUnbind()
40.Android针对HTTP实现网络通信的方式主要包括(AC )。(多选)
A.使用HttpURLConnection实现
B.使用ServiceConnection实现
C.使用HttpClient实现
D.使用HttpConnection实现
41.Android中的HttpURLConnection中的输入/输出流操作被统一封装成了(AB )。
(多选)
A.HttpGet B.HttpPost C.HttpRequest D.HttpResponse
- 简答题
1. 列举Android中的常用布局,并简述他们各自的特点。
Android中有五种常用布局,分别为RelativeLayout(相对布局)、LinearLayout(线性布局)、FrameLayout(帧布局)、TableLayout(表格布局),他们的特点具体如下:
- RelativeLayout(相对布局):该布局是通过相对位置的方式指定该布局内子控件的位置。
- LinearLayout(线性布局):该布局可通过android:orientation属性指定该布局内的子控件水平和竖直排列。
- TableLayout(表格布局):采用行、列的形式来管理控件。他通常搭配TableRow布局使用,一个TableRow代表一行,在TableRow中添加的控件代表一列。
- FrameLayout(帧布局):该布局会在屏幕上创建一块空白区域,添加到该区域中的每个子控件占一帧,这些帧会一个一个叠加在一起,后加入的控件会叠加在上一个控件上层。默认情况下,帧布局中的所有控件会与左上角对齐。
2. 简述ListView与RecyclerView的区别
答:ListView与RecyclerView的区别具体如下:
1、展示效果:RecyclerView控件可以通过LayoutManager类实现横向或竖向的列表效果、瀑布流效果和GridView效果,而ListView控件只能实现竖直的列表效果。
2、适配器:RecyclerView控件使用的是RecyclerView.Adapter适配器,该适配器将BaseAdapter中的getView()方法拆分为onCreateViewHolder()方法和onBindViewHolder()方法,强制使用ViewHolder类,使代码编写规范化,避免了初学者写的代码性能不佳。
3、复用效果:RecyclerView控件复用Item对象的工作由该控件自己实现,而ListView控件复用Item对象的工作需要开发者通过convertView的setTag()方法和getTag()方法进行操作。
4、动画效果:RecyclerView控件可以通过setItemAnimator()方法为Item添加动画效果,而ListView控件不可以通过该方法为Item添加动画效果。
3. 简述内容提供者的工作原理
答:假设B程序需要操作A程序数据库中的数据,一般需要A程序使用ContentProvider
暴露数据,才能被其他程序操作。B程序通过ContentResolver操作A程序暴露出来的数据,而A程序会将操作结果返回给ContentResolver,然后ContentResolver再将操作结果返回给B程序。
4.简述Service的两种启动方式(服务的启动方式的差异)
答:Service的启动方式分别可以调用startService()、bindService()方法,这两个启动方式的区别如下所示:
- 生命周期
- startService():使用该方法开启Service时,执行的生命周期方法依次为onCreate()、onStartCommand()、onDestroy()。
- bindService():使用该方法开启Service时,执行的生命周期方法依次为:onCreate()、onBind()、onUnbind()、onDestroy()。
- 停止服务的方法
- startService():调用stopSelf()、stopService()方法停止服务。
- bindService():调用unbindService()方法停止服务。
- 组件的关联
- startService():当一个组件通过此方法开启服务时,服务与开启该组件没有关联,即使开启服务的组件被销毁,服务依旧运行。
- bindService():当一个组件通过此方法开启服务时,服务会与该组件绑定,组件一旦被销毁,该服务也会被销毁。
5. 简述Service的生命周期(服务生命周期差异)?
答:使用不同的方式启动服务,其生命周期会不同。开启服务的方法分别为startService()、bindService(),当通过startService()方法启动服务时,执行的生命周期方法依次为onCreate()、onStartCommand()、onDestroy()。当通过bindService()方法启动服务时,执行的生命周期方法依次为onCreate()、onBind()、onUnbind()、onDestroy()。其生命周期方法的具体含义如下:
- onCreate ():第一次创建服务时执行的方法。
- onStartCommand():调用startService()方法启动服务时执行的方法。
- onBind():调用bindService()方法启动服务时执行的方法。
- onUnbind():调用unBindService()方法断开服务绑定时执行的方法。
- onDestory():服务被销毁时执行的方法。
6. 内部存储和外部存储的区别?
答:
存储位置不同:
内部存储是指设备内部的私有存储空间,只有应用本身可以访问;而外部存储一般指设备的SD卡或者共享的存储空间,多个应用可以访问。访问权限不同:
内部存储的数据默认是私有的,其他应用无法访问;外部存储上的数据通常是公开的,其他应用有权限读取甚至修改(需要相应权限)。存储容量不同:
内部存储容量相对较小,受设备内部空间限制;外部存储容量较大,可以扩展,适合存放大量数据如图片、视频等。数据安全性不同:
内部存储的数据较安全,卸载应用时会被删除;外部存储上的数据不一定会随应用卸载而删除,容易被其他应用访问,安全性较低。读写速度差异:
内部存储的读写速度一般比外部存储快,因为它通常是闪存或内部存储芯片;外部存储的速度取决于SD卡或外部存储介质的质量。使用场景不同:
内部存储适合存放应用的私有数据,如配置文件、数据库等;外部存储适合存放共享的媒体文件或大容量数据。7. Handler消息机制?(P202-203)
答:Handler机制主要包括4个关键对象:Message、Handler、MessageQueue、Looper。
组件
作用
Handler
消息的发送者和处理者,绑定到特定线程的 Looper
Message
消息载体,包含 what(标识)、arg(整型数据)、obj(对象)等字段
MessageQueue
优先级消息队列(单链表实现),按 when 排序存储消息
Looper
消息循环引擎,不断从队列中取消息并分发给对应 Handler
8. 广播机制的实现过程
答:Android中的广播使用了观察者模式,即基于消息的发布/订阅事件的模式。广播发送者和接收者分别处于观察者模式中的消息发布和订阅两端。广播机制的实现过程具体如下:
1. 广播接收者通过Binder机制在AMS(Activity Manager Service)中进行注册。
2. 广播发送者通过Binder机制向AMS发送广播。
3. AMS查找符合相应条件(IntentFilter/Permission)的广播接收者,将广播发送到相应的消息循环队列中。
4. 执行消息循环时获取到发送的广播,然后回调广播接收者中的onReceive()方法并在该方法中进行相关处理。
9. 简述有序广播和无序广播的区别
答:广播分为有序广播和无序广播,他们有以下几点的区别。
(1) 发送广播时,使用的方法不同。有序广播使用sendOrderedBroadcast()发送广播,而无序广播使用sendBroadcast()方法发送广播。
(2) 广播接收者执行的顺序
- 有序广播的接收者是顺序执行的。
有序广播按照广播接收者声明的优先级别被依次接收。当在高级别的广播接收者逻辑执行完毕之后,广播才会继续传递。当优先级相同时,先注册的广播接受者优先执行。
- 无序广播是完全异步执行的。
当发送无序广播时,所有监听这个广播的广播接收者都会接收到此广播消息,但接收和执行的顺序不确定。
(3)拦截广播
有序广播的接收者可拦截广播。如果优先级较高的广播接收者将广播终止,那么广播将不再向后传递。而无序广播则不能被拦截。
(4)效率
有序广播的效率比无序广播低。
10. 简述Android数据存储的方式
答:Android平台提供的五种数据存储方式,分别为文件存储、SharedPreferences、SQLite数据库、ContentProvider和网络存储,这些存储方式的特点如下。
- 文件存储:Android提供了openFileInput()和openFileOutput()方法来读取设备上的文件,其读取方式与Java中I/O程序是完全一样的。
- SharedPreferences:这是Android提供的用来存储一些简单的配置信息的一种机制,它采用了XML格式将数据存储到设备中。通常情况下,我们使用SharedPreferences存储一些应用程序的各种配置信息,如用户名、密码等。
- SQLite数据库:SQLite是Android自带的一个轻量级的数据库,他运算速度快,占用资源少,还支持基本SQL语法,一般使用他作为复杂数据的存储引擎,可以存储用户信息等。
- ContentProvider:Android四大组件之一,主要用于应用程序之间的数据交换,它可以将自己的数据共享给其他应用程序使用。
- 网络存储:需要与Android网络数据包打交道,将数据存储到服务器上,通过网络提供的存储空间来存储/获取数据信息。
- 编程填空
掌握常用控件的使用(TextView、EditText、Button、ImageView、RadioButton、CheckBox),活动之间的跳转,可以去看P89—小猴子摘桃;P98仿美团外卖菜单,然后再会一个登录注册(P59)根据去参考往年的卷子
高频空:setText R.id.xxId onClick close() OnClickListener startActivity close() @+id
- 论述
常见三种问法:
Android和其他智能手机操作系统(iOS、Windows Phone)相比有什么优缺点?(可从开发模式、安全性、应用市场方面论述)
答:
开发模式:
Android开放灵活,支持多语言和工具,开发者可深度定制,但碎片化严重,需适配多设备;iOS封闭统一,开发效率高但限制较多;Windows Phone生态薄弱,开发者支持不足。安全性:
Android权限由用户掌控,但应用审核宽松,存在风险;iOS封闭生态下安全性更高;Windows Phone更新滞后,防护较弱。应用市场:
Android应用数量多、盈利模式灵活,但质量参差不齐;iOS应用优质但分成较高;Windows Phone应用稀缺,开发者兴趣低。总结:Android适合追求自由与灵活性的开发者,iOS适合注重安全与品质的场景,Windows Phone已边缘化。
谈谈你对移动智能终端应用开发的理解与认识?(从平台、生态圈、技术、开发工具及环境、趋势、现状等多方面进行论述)
答:
1. 平台与生态
- iOS vs Android:iOS封闭稳定,适合追求高效与盈利的开发者;Android开放灵活,覆盖用户广但需适配碎片化问题。
- 生态重要性:平台规则(如苹果审核)、应用商店(App Store/Play)直接影响用户获取,需融入生态才能生存。
2. 技术与工具
- 开发选择:原生开发(iOS用Swift/Android用Kotlin)性能最优,但成本高;跨平台(Flutter/React Native)效率高,适合快速迭代。
- 工具支持:Xcode(iOS)和Android Studio提供调试与界面设计功能,降低开发门槛。
- 新技术融合:AI(如语音交互)、5G(实时应用)逐渐成为标配,需掌握基础集成能力。
3. 现状与挑战
- 现状:应用市场饱和,头部效应明显,中小开发者需差异化竞争(如垂直领域、创新功能)。
- 挑战:隐私政策趋严(如苹果ATT)、硬件适配复杂(Android机型多)、性能优化压力大(用户对流畅度要求高)。
4. 未来趋势
- 跨端适配:折叠屏、车载系统等新场景要求应用兼容多终端。
- AI驱动:个性化推荐、智能助手等技术将普及,提升用户体验。
- 隐私优先:用户对数据控制权增强,开发者需转向隐私友好型设计。
总结:移动开发需平衡技术、用户需求与平台规则,未来需关注跨端、AI与隐私保护,以适应行业变化。
通过本课,你对Android平台有什么新的认识和理解?
答:通过本课学习,我重新理解了Android平台的特性:它以开放灵活吸引开发者,但也因厂商定制和硬件差异导致兼容性复杂,需用工具(如Jetpack)简化开发;同时,平台对用户隐私(如权限控制)和性能(如后台耗电限制)的重视,要求开发者适应规则变化。未来需紧跟Kotlin等新技术,在开放生态中兼顾创新与规范,才能应对市场竞争。
相关文章:
HNUST湖南科技大学-安卓Android期中复习
使用说明:除了选择判断就看习题外,推荐重点复习三四章多复习案例,这里应该是编程空题,把界面控件、活动单元熟悉一下。第五章(数据存储方式,尤其是文件存储)、第六章(重点内容提供者…...
一种应用非常广泛的开源RTOS(实时操作系统):nuttx
什么是NuttX? NuttX(读音接近“纳特-艾克斯”)是一种应用非常广泛的开源RTOS(实时操作系统),由Gregory Nutt博士主要推动开发。RTOS,即 Real-Time Operating System,直译为“实时操…...
WebSocket 客户端 DLL 模块设计说明(基于 WebSocket++ + Boost.Asio)
WebSocket 客户端 DLL 模块设计说明(基于 WebSocket Boost.Asio) 📌 目录 一、模块总览二、导出接口说明(EXPORTS)三、状态变量功能解读四、连接启动流程详解五、事件回调说明六、消息发送流程七、心跳与断连 JSON …...
微信小程序:封装request请求、解决请求路径问题
一、创建文件 1、创建请求文件 创建工具类文件request.js,目的是用于发送请求 二、js接口封装 1、写入接口路径 创建一个变量BASE_URL专门存储api请求地址 2、获取全局的token变量 从缓存中取出token的数据 3、执行请求 (1)方法中接收传递的参数 function request(url,…...
Ubuntu24.04 安装 5080显卡驱动以及cuda
前言 之前使用Ubuntu22.04版本一直报错,然后换了24.04版本才能正常安装 一. 配置基础环境 Linux系统进行环境开发环境配置-CSDN博客 二. 安装显卡驱动 1.安装驱动 按以下步骤来: sudo apt update && sudo apt upgrade -y#下载最新内核并安装 sudo add…...
Jenkins的流水线执行shell脚本执行jar命令后项目未启动未输出日志问题处理
现象 在流水线里配置了启动脚本例如,nohup java -jar xxx.jar >nohup.out 2>&1 & 但是在服务器发现服务并未启动,且nohup日志里没输出日志,这样的原因是jenkins在执行完脚本后,就退出了这个进程。 解决 在启动脚本执行jar命令的上一步…...
Core Web Vitals 全链路优化:从浏览器引擎到网络协议深度调优
Core Web Vitals 全链路优化:从浏览器引擎到网络协议深度调优 一、浏览器渲染引擎级优化 1.1 合成器线程优化策略 • 分层加速:通过will-change属性创建独立的合成层 .accelerated {will-change: transform;backface-visibility: hidden; }• 光栅化策略调整:使用image-r…...
【网络编程】十、详解 UDP 协议
文章目录 Ⅰ. 传输层概述1、进程之间的通信2、再谈端口号端口号的引出五元组标识一个通信端口号范围划分常见的知名端口号查看知名端口号协议号 VS 端口号 3、两个问题一个端口号是否可以被多个进程绑定?一个进程是否可以绑定多个端口号? 4、部分常见指令…...
求职困境:开发、AI、运维、自动化
文章目录 问:我的技术栈是web全栈(js,css,html,react,typscript),C开发,python开发,音视频图像开发,神经网络深度学习开发,运维&#…...
如何将数据从一部手机传输到另一部手机 | 5 种便捷传输方式
更换新手机可能是一种令人兴奋的体验,但您仍然需要解决问题 - 如何将数据从一部手机传输到另一部手机。幸运的是,有多种方法可以简化此过程,从一键式解决方案到基于云的传输。本文探讨了五种流行的技术来帮助您无缝迁移数据。 第 1 部分&…...
GEE计算 RSEI(遥感生态指数)
🛰️ 什么是 RSEI?为什么要用它评估生态环境? RSEI(遥感生态指数,Remote Sensing Ecological Index) 是一种通过遥感数据计算得到的、综合反映区域生态环境质量的指标体系。 它的设计初衷是用最少的变量&…...
k8s监控方案实践补充(二):使用kube-state-metrics获取资源状态指标
k8s监控方案实践补充(二):使用kube-state-metrics获取资源状态指标 文章目录 k8s监控方案实践补充(二):使用kube-state-metrics获取资源状态指标一、Metrics Server简介二、kube-state-metrics实战部署1. 创…...
JavaScript:PC端特效--元素可视区client系列
一、client系列 client翻译过来就是客户端,我们使用client系列的相关属性来获取元素可视区的相关信息。通过client系列的相关属性可以动态的得到该元素的边框大小、元素大小等。 client系列属性作用element.clientTop返回元素上边框的大小element.clientLeft返回元…...
Centos7 中 Docker运行配置Apache
1、拉去httpd镜像(不加版本号,默认拉最新版本) docker pull httpd 2、运行httpd docker run -di --name httpd-test -p 8080:80 httpd 3、创建文件夹后边做映射 mkdir -p /Docker/apache/www /Docker/apache/logs /Docker/apache/conf 4、…...
PostgreSQL中的全页写
一、概述 在PGSQL数据库中,默认的页面大小为8KB,但是磁盘buffer的大小为4KB,扇区大小为512B。这就导致在操作系统的角度看数据库的写操作,其实并不是一种原子操作。如果操作系统发生了系统级别的故障,此时正好操作系统…...
对称二叉树的判定:双端队列的精妙应用
一、题目解析 题目描述 给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的: 1/ \2 2/ \ / \ 3 4 4 3而 [1,2,2,null,3,null,3] 则不是镜像对称的: 1/ \2 2\ \3 3问题本质 判断一棵二叉…...
Redis + ABP vNext 构建分布式高可用缓存架构
🚀 Redis ABP vNext 构建分布式高可用缓存架构 🔧 环境准备 开发环境 .NET 8.0 SDKVisual Studio 2022 / VS CodeDocker & Docker Compose NuGet 包 Volo.Abp.Caching.StackExchangeRedis v8.1.5Volo.Abp.DistributedLocking.StackExchangeRedis v…...
jvm第一篇《内存与垃圾回收》学习笔记第一章jvm初始
jvm是虚拟机的通称。 java实际默认的应用是hotspot(基于栈的指令集架构) 注:注意区分寄存器的指令集和栈指令集的架构。(大概理解java移植性好就是因为是栈指令集) jvm虚拟机,具有跨语言功能࿰…...
MySQL——3、数据类型
数据类型 1、数据类型分类2、数值类型2.1、tinyint类型2.2、bit类型2.3、小数类型2.3.1、float2.3.2、decimal 3、字符串类型3.1、char3.2、varchar3.3、char和varchar比较3.4、日期和时间类型3.5、enum和set 1、数据类型分类 2、数值类型 2.1、tinyint类型 首先创建t1表&…...
Flutter - 集成三方库:日志(logger)
日志 使用print方法时,会提示 添加依赖 $ flutter pub add logger下载依赖 $ flutter pub get使用 打印 import package:logger/logger.dart;var logger Logger(); logger.d("debug"); logger.e("error"); logger.i("info"); logger.f(&qu…...
第五部分:第五节 - Express 路由与中间件进阶:厨房的分工与异常处理
随着你的 Express 应用变得越来越大,所有的路由和中间件都写在一个文件里会变得难以管理。这时候就需要将代码进行拆分和组织。此外,一个健壮的后端应用必须能够优雅地处理错误和一些常见的 Web 开发问题,比如跨域。 路由模块化 (express.Ro…...
国标GB/T 12536-90滑行试验全解析:纯电动轻卡行驶阻力模型参数精准标定
摘要 本文以国标GB/T 12536-90为核心框架,深度解析纯电动轻卡滑行试验的完整流程与数据建模方法,提供: 法规级试验规范:从环境要求到数据采集全流程详解行驶阻力模型精准标定:最小二乘法求解 ( FAv^2BvC ) 的MATLAB实…...
组件导航 (Navigation)+flutter项目搭建-混合开发+分栏
组件导航 (Navigation)flutter项目搭建 接上一章flutter项目的环境变量配置并运行flutter 上一章面熟了搭建flutter并用编辑器运行了ohos项目,这章主要是对项目的工程化改造 先创建flutter项目,再配置Navigation 1.在开发视图的resources/base/profi…...
物联网中的WiFi模式解析:AP、STA与混合模式
物联网现在还是比较火的,各种设备都要联网,那么WiFi已成为设备联网的“标配”。但你是否想过,为什么有的设备能自己创建WiFi热点,有的只能连接路由器?为什么有些网关既能收数据又能传数据? 主要还是因为Wi…...
spring cloud gateway 源码解析
参考:Spring Cloud Gateway SpringCloud gateway源码走读(顺带聊聊响应式) - 掘金 1,原理图 还是从starter 开始看 要实现网关的核心概念, 肯定是需要接受请求的server ,从上面的截图看 starter-gateway 只负责了包的依赖,并没有定义自动配置 , 他依赖了starter-webf…...
游戏引擎学习第286天:开始解耦实体行为
回顾并为今天的内容定下基调 我们目前正在进入实体系统的一个新阶段,之前我们已经让实体的移动系统变得更加灵活,现在我们想把这个思路继续延伸到实体系统的更深层次。今天的重点,是重新审视我们处理实体类型(entity type&#x…...
【论文阅读】KIMI K1.5: SCALING REINFORCEMENT LEARNING WITH LLMS
KIMI K1.5: SCALING REINFORCEMENT LEARNING WITH LLMS Scaling的解释: 通过系统性的方法扩展强化学习算法的能力,使其能够处理更复杂的问题、更大的状态/动作空间、更长的训练周期或更高效的资源利用 原文摘要: 研究背景与问题定位 传统预训…...
大语言模型与多模态模型比较
一、核心差异:输入数据类型与模态融合 输入数据类型 LLM:仅处理文本数据,例如文本分类、机器翻译、问答等任务,通过大规模语料库学习语言规律。 LMM:支持文本、图像、音频、视频等多种模态输入,例如根据图…...
vscode debug node + 前端
方法 2:调试全栈(Node 前端) 如果需同时调试后端和前端: 分别启动两个调试会话 一个配置调试 Node.js 后端(server.js)。 另一个配置调试浏览器前端(如上)。 {// Use IntelliS…...
RK3568-鸿蒙5.1与原生固件-扇区对比分析
编译生成的固件目录地址 ../openharmony/out/rk3568/packages/phone/images鸿蒙OS RK3568固件分析 通过查看提供的信息,分析RK3568开发板固件的各个组件及其用途: 主要固件组件 根据终端输出的文件列表,RK3568固件包含以下关键组件&#x…...
Java线程池(Thread Pool)性能优化解析
在高性能、高并发的Java应用开发中,线程池(Thread Pool)是不可或缺的组件。它通过复用线程,避免了线程频繁创建和销毁带来的资源开销,提高了系统的响应速度和稳定性。然而,不合理的线程池配置和使用方式也可能成为系统性能瓶颈的根源。 本文旨在深入解析Java线程池的性能…...
AI重塑未来学者:研究生教育的“进化论”与“数字化生存指南
目录: 一、引言:AI浪潮下的“象牙塔”新挑战与新机遇 二、AI的“双刃剑”:深度剖析对研究生教育的颠覆性影响 1. 研究范式的革新:从“人工”到“智能” 2. 知识获取与传授方式的重塑 3. 创新能力与批判性思维的再定义 4. 伦理困境与学术诚信的新考验 三、他山之石:发达国家…...
IHttpHandler和Tcp Listener的web服务器接收上传文件有什么区别
IHttpHandler和Tcp Listener的web服务器接收上传文件有什么区别 IHttpHandler 与 TCP Listener 处理文件上传的核心区别 IHttpHandler 和 TcpListener 是ASP.NET中处理 HTTP 请求的两种不同抽象层级,它们在文件上传处理上存在以下关键区别: 1. 抽象层…...
C++ --- new与delete
new与delete 一、回顾1.malloc2.calloc3.realloc4.free 二、new与delete的特殊之处(1)(2) 三、new与delete的底层原理四、总结 一、回顾 在C语言阶段我们学习了动态内存管理:malloc,calloc,realloc,free。 1.malloc …...
Guided Filtering相关记录
一、背景介绍 以前折腾保边滤波时候,刷了一些Guided Filtering相关资料。这里主要是对它们做个算法效果复现和资料简单整理。 二、Guided Filtering 1、基本原理 原版Guided Filtering的提出,主要是为了改善双边滤波做保边平滑滤波器时候的梯度翻转伪影…...
Rust 学习笔记:关于 String 的练习题
Rust 学习笔记:关于 String 的练习题 Rust 学习笔记:关于 String 的练习题选出描述正确的那一个。该程序最多可能发生多少次堆的内存分配?哪种说法最能解释为什么 Rust 不允许字符串索引?哪种说法最能描述字符串切片 &str 和字…...
AG-UI 协议:重构多模态交互,开启智能应用新纪元
一、协议诞生的时代背景:填补 AI 生态最后一块拼图 在人工智能技术飞速发展的今天,AI 代理(Agent)作为能够主动执行复杂任务的智能实体,正从实验室走向生产环境,重塑各个行业的工作流程。然而,…...
网络世界的“百变身份“:动态IP让连接更自由
深夜的程序调试 凌晨两点,我盯着电脑屏幕上的报错信息:"Connection timed out"。这是本周第三次测试服务器响应时被拒绝访问了——只因为之前同一个IP地址尝试登录太过频繁。正在改代码的朋友小王凑过来看了眼:"老兄&…...
【学习笔记】因果推理导论第1课
因果推理导论第1课 为何要做因果推理 一、辛普森悖论一个例子 二、相关不代表因果性三、什么揭示因果四、观测研究五、结论 本节课通过 一、辛普森悖论 一个例子 书中举了一个疫情两种治疗方法A,B,分析哪一个治疗方法更好的例子. 首先已知B治疗方法更稀缺,因此观测数据样本上…...
Android 中 权限分类及申请方式
在 Android 中,权限被分为几个不同的类别,每个类别有不同的申请和管理方式。 一、 普通权限(Normal Permissions) 普通权限通常不会对用户隐私或设备安全造成太大风险。这些权限在应用安装时自动授予,无需用户在运行时手动授权。 android.permission.INTERNETandroid.pe…...
深度学习算法介绍
深度学习算法是一种基于人工神经网络结构的机器学习方法,其核心理念是通过多层次的神经元组成的神经网络来模拟人类大脑的工作原理。以下是几种常见的深度学习算法及其简要介绍: 多层感知器(Multilayer Perceptron, MLP)ÿ…...
Java【13_1】final、初始化块、继承(测试题)
测试题 1、简述final修饰符的功能 ① 修饰类 该类不能被继承 ② 修饰变量 该变量就是常量(一旦被初始化,就不可以修改) ③ 修饰方法 该方法不能被重写 2、写出程序结果 (仔细认真) public class MyClass { static int x,y; static{ …...
小结:JavaScript 模块化工具链
JavaScript 模块化工具链 是现代前端开发中用于组织、管理和优化模块化代码的核心工具集合。以下是关于 JS 模块化工具链的概述,包括关键工具、作用和常见工作流程:** **1. **模块化的背景 JavaScript 模块化是为了解决代码组织、依赖管理和作用域隔离…...
RabbitMQ ④-持久化 || 死信队列 || 延迟队列 || 事务
消息确认机制 简单介绍 RabbitMQ Broker 发送消息给消费者后,消费者处理该消息时可能会发生异常,导致消费失败。 如果 Broker 在发送消息后就直接删了,就会导致消息的丢失。 为了保证消息可靠到达消费者并且成功处理了该消息,…...
十一、Hive JOIN 连接查询
作者:IvanCodes 日期:2025年5月16日 专栏:Hive教程 在数据分析的江湖中,数据往往分散在不同的“门派”(表)之中。要洞察数据间的深层联系,就需要JOIN这把利器,将相关联的数据串联起来…...
启用rvzi可视化自己的机器人发现joint state publisher gui没有滑块
启用rvzi可视化自己的机器人发现joint state publisher gui没有滑块? 解决方法: 一:查看urdf中joint type定义是不是revolute。 二:查看urdf关节限制是不是正确,如果是0到0则不正确。 <joint name"joint_…...
Gitee DevOps:中国企业数字化转型的“本土化加速器“
在数字化浪潮席卷全球的当下,DevOps已经从技术热词转变为企业的核心生产力工具。根据IDC最新报告,到2025年中国DevOps市场规模将达到15亿美元,年复合增长率高达25%。在这一快速增长的市场中,一个显著趋势正在显现:越来…...
RKNN开发环境搭建(ubuntu22.04)
以下情况在RV1106G3的平台上验证正常。 1、conda安装 1)conda --version//确认是否安装 2)创建一个安装目录,进行下一步 3)wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-4.6.14-Linux-x…...
2025年上软考 考试时间+准考证打印全攻略
各位同学好呀!我是你们的老朋友大老李~之前咱们聊过软考报名和机考模拟系统的使用技巧。今天要和大家分享一下,最近好多同学私信的问题:"老李!准考证到底哪天能打印?""考试时间会不会有变动?…...
vllm量化05—FP8 W8A8
本系列基于Qwen2.5-7B,学习如何使用vllm量化,并使用benchmark_serving.py、lm_eval 测试模型性能和评估模型准确度。 测试环境为: OS: centos 7 GPU: nvidia l40 driver: 550.54.15 CUDA: 12.3本文是该系列第5篇——FP8 W8A8 一、量化 fro…...