Android横竖屏切换和灭屏亮屏时Activity的生命周期探究(2)

Android横竖屏切换和灭屏亮屏时Activity的生命周期探究(1) 研究这个问题的初衷在于项目中碰到了一个问题:横屏的时候灭屏再亮屏,亮屏的时候用户可以清晰的看到先启动竖屏(过程1)再切换到横屏的过程,由于灭屏的时候onSaveInstanceState()保存的时横屏时的状态信息,因此过程1竖屏会使用到横屏的状态参数而且这一过程用户是可见的,因此会导致一些意想不到的Bug的出现。 探究使用的实例中我用了屏幕的横竖屏和宽这两个配置信息来说明生命周期中此时系统所知 阅读详情

配置了configChange属性之后,横竖屏切换时不用再杀死和重新启动Activity了,想想Android系统设置这个属性的初衷,横竖屏切换时需要加装不同的变量信息,因此杀死当前Activity启动切屏后的Activity是一个理所应当的过程,但是不够灵活,有些状态下,我们不希望横竖屏切换时Activity被杀死,因此configChange这个属性就能发挥一些作用了,我们只需要在onConfigurationChanged()这个函数中配置横竖屏切换后所需要的信息就够了。然而这种方法虽然简便,但容易出错和引发一些意外的效果,因此应谨慎使用。


//以下在manifest中已进行配置

//横竖屏切换
C:\Users\Administrator>adb logcat -s vi
--------- beginning of /dev/log/main
--------- beginning of /dev/log/system
D/vi      (17324): ---onCreate()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi      (17324): ---onStart()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi      (17324): ---onResume()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi      (17324): ---onConfigurationChanged()--orientation = ORIENTATION_LANDSCAPE--width = 854 //竖屏切换到横屏,可见此时已经获取到了横屏的配置信息,但是由于不会重新加载Activity的用户信息,我们需要自己在此处配置横屏需要的信息
D/vi      (17324): ---onConfigurationChanged()--orientation = ORIENTATION_PORTRAIT--width = 480 //横屏切换到竖屏


//竖屏从灭屏到亮屏
C:\Users\Administrator>adb logcat -s vi
--------- beginning of /dev/log/main
--------- beginning of /dev/log/system
D/vi      (17324): ---onPause()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi      (17324): ---onSaveInstanceState()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi      (17324): ---onStop()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi      (17324): ---onRestart()--orientation = ORIENTATION_PORTRAIT--width =480
D/vi      (17324): ---onStart()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi      (17324): ---onResume()--orientation = ORIENTATION_PORTRAIT--width = 480


//横屏的灭屏
C:\Users\Administrator>adb logcat -s vi
--------- beginning of /dev/log/main
--------- beginning of /dev/log/system
D/vi      (17324): ---onConfigurationChanged()--orientation = ORIENTATION_PORTRAIT--width = 480//同没有配置信息时一致,只不过先竖屏的过程被onConfigurationChanged()取代了。
D/vi      (17324): ---onPause()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi      (17324): ---onSaveInstanceState()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi      (17324): ---onStop()--orientation = ORIENTATION_PORTRAIT--width = 480


//横屏的亮屏
C:\Users\Administrator>adb logcat -s vi
--------- beginning of /dev/log/main
--------- beginning of /dev/log/system
D/vi      (17324): ---onRestart()--orientation = ORIENTATION_PORTRAIT--width =480
D/vi      (17324): ---onStart()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi      (17324): ---onResume()--orientation = ORIENTATION_PORTRAIT--width = 480

D/vi      (17324): ---onConfigurationChanged()--orientation = ORIENTATION_LANDSCAPE--width = 854


原文链接

含泪狂刷Android面试100题,面试时吊打面试官 每日一分享,阅读十分钟,和您一起学习???? Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。这里会不断收集和更新Android基础相关的面试题,目前已收集100题。 1.Android系统的架构 应用程序 Android会同一系列核心应用程序包一起发布,该应用程序包包括Email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。 应用程序框架 开发 阅读详情

相关推荐

Android 面试题集锦

和你一起终身学习,这里是程序员AndroidAndroid是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。这里会不断收集和更新Android基础相关的面试题,目前已收集100题。1.Android系统的架构应用程序Android会同一系列核心应用程序包一起发布,该应用程序包包括Email客户端,SMS短消息程序...

程序员Android 1770

[iOS]app解屏(亮屏)之后刷新数据

需求是:App使用过程中,进入待机暗屏状态,之后解锁亮屏,要刷新数据,避免让用户看到的不是最新的数据。 解决方法:一开始觉得是在viewwillappear 里面去操作,发现不可行。其实应该是去应用程序的生命周期里面的方法里(如下)发通知,然后让指定页面去接收这个通知,调用刷新方法。 在Appdelegate.m中 //应用程序将要进入活动状态执行 - (void)appl

Vanpoe的博客 1380

实例讲解Simulink CAN通讯丢失故障判定模型搭建及仿真测试验证方法

本文通过ABS通讯丢失故障触发、判定条件Simulink模型的搭建和仿真的讲解,介绍了一种控制器CAN通讯丢失故障判定的方法和建模方法,希望能给相关技术人员带来一定参考和帮助。

qq_43011586的博客 3684

android 屏幕熄灭 生命周期,android – 在屏幕关闭和开启时了解生命周期的问题

信息:我的设备是一个2.2的Nexus One,我已经测试了两个项目,一个在1.5,一个在2.1。问题:当屏幕关闭和打开时,我无法理解我的应用程序的生命周期。这是我的输出// activity starts08-04 17:24:17.643: ERROR/PlayActivity(6215): onStart executes ...08-04 17:24:17.643: ERROR/PlayA...

weixin_31444881的博客 1174

抖音视频数据获取实战:从API调用到热门内容挖掘

通过抖音API获取视频数据,企业可快速构建数据驱动的运营体系。本文提供了从权限申请到商业落地的全流程指南,建议结合自身业务扩展功能。如有技术问题,欢迎​​评论​​区留言讨论!#抖音开发 #数据挖掘 #短视频运营 #API调用 #Python实战。

WBKJ_Noah_的博客 6386

网络安全 —— 实验(基于华为eNSP模拟器)

8. 实验八 —— 通过路由的远程管理(基于实验七的基础配置)8. 实验八 —— 通过路由的远程管理(基于实验七的基础配置)6. 实验六 —— 交换机的远程控制(直接控制和间接控制)6. 实验六 —— 交换机的远程控制(直接控制和间接控制)5. 实验五 —— 将交换机作为PC端通过交换机相连。5. 实验五 —— 将交换机作为PC端通过交换机相连。4. 实验四 —— 两个PC机通过两台交换机相连。2. 实验二 —— 两个PC机通过交换机相连。2. 实验二 —— 两个PC机通过交换机相连。

这个家伙看起来很懒,只想把你留下来哦 9337

复习 activity 的生命周期 手机锁屏时生命周期变化

转自:http://blog.youkuaiyun.com/qq_35366908/article/details/72764184 onCreat() 不可见不可交互 创建时调用 onStart()是activity界面被显示出来的时候执行的,用户可见,包括有一个activity在他上面,但没有将它完全覆盖,用户可以看到部分activity但不能与它交互      创建时或者从后台重新回到前台时调用

小小希 1286

pycharm添加Anaconda解释器显示不出来

因为我之前下载的是pycharm最新版本2024.1的,所以我抱着试一试的心态卸载重装了2021.3.3的,创建新文件的时候立刻就自己识别好了conda环境。就是图中画圈的地方,之前一直显示为python的图标,但是再Python Interpreter后面跟的路径确实是我下载anaconda的地方。另外一种方法就是使用Virtualenv Environment方式配置,但是我的pycharm还是没有识别出conda的图标。首先是这位的方法,先添加系统解释器,再重启,但是我的图标还是python。

2202_75803271的博客 4006

Android熄屏/亮屏,旋转屏幕/横竖屏切换生命周期变化与activity销毁重建

Android设备屏幕锁定/解锁/屏幕点亮监听Android屏幕锁定,解锁,开屏比较常用,故抽象成一个公共的DeviceScreenListener。在使用使用,首先new出一个DeviceScreenListener,然后注册(register)使用,使用后不要忘记注销,一般在生命周期的onDestory里面unregister。Android设备屏幕锁定/解锁/屏幕点亮监听_android 监听设备解锁完成-优快云博客。Android熄屏/亮屏,旋转屏幕/横竖屏切换生命周期变化。

Zhang Phil 2152

SAP FICO CBS接口-银企直连付款平台功能开发说明书(包括测试样例、FS)

SAP FICO CBS接口-银企直连付款平台功能开发说明书(包括测试样例、FS)

我好像病了的博客 2447

点云语义分割:PointNet训练S3DIS数据集

文章目录一、数据准备1.1、数据下载二、训练三、测试 项目地址:pointnet 此次我们是用pointnet网络来做语义分割。代码在pointnet项目中的sem_seg文件夹下,里面也有README.md介绍了训练的过程。 一、数据准备 1.1、数据下载 原始数据下载 处理好的h5格式数据下载 二、训练 三、测试 ...

zhaoguanhua的博客 4176

Android横竖屏切换和灭屏亮屏时Activity的生命周期探究

Activity 切换横竖屏一般会销毁当前Activity,

angusing的专栏 788

3、Tone Mapping色调映射(Advanced High Dynamic Range Imaging )

3、Tone Mapping色调映射(Advanced High Dynamic Range Imaging) 如今,大多数可用的显示设备无法本地显示HDR内容。 入门级显示器的对比度仅为200:1。 尽管高端液晶电视具有更高的对比度,但平均对比度约为10,000:1,但通常每个色彩通道的离散度为8位,很少为10位。 这意味着色调限制为255。在过去的二十年中,研究人员花费了大量时间和精力来压缩HDR图像和视频的范围,以便可以在LDR显示器上更“自然”地看到数据。 图3.1 色调映射和真实场景之间.

ISP行业的忠实粉丝 1866

android解锁屏时Activity生命周期的变化

最近做的忍者小鸡暗杀行动遇到按锁屏键再解锁时 进入游戏画面会特别卡的问题,后来打日志发现 锁屏再解屏时生命Activity的生命周期发生异常变化引起的,下面就具体来看下。 事先在GameActivity(游戏主界面)的 onCreate() 方法和 onDestroy()方法打上Log 。 进入GameActivity时 ——————————->onCreate(); 按锁屏后 : ——

bingdongguke的专栏 7981

5、硬件工程师笔试面试——上拉电阻、下拉电阻(2025版本)

本文系统介绍了上拉电阻和下拉电阻的原理与应用。上拉电阻通过连接电源确保电路高电平状态,常用于数字电路防抖、OC门驱动等场景;下拉电阻连接地线维持低电平,适用于低电平触发电路。文章详细分析了两种电阻的选择方法、功耗与响应速度的平衡策略,以及在高速信号传输中的影响差异。同时对比了二者的优缺点,并提供了模拟电路中的应用实例。最后给出了电阻值计算的工程方法,为硬件工程师的电路设计提供了实用参考。

XU157303764的博客 2868

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Activity 关于生命周期一些问题的实践验证

Activity 关于生命周期一些问题的实践验证 本文内容 1. 如何验证问题 2. 正常情况下的生命周期 3. 由活动 A 启动活动 B 时,活动 A 的 onpause() 和 B 的 onResume() 哪一个先执行? 4. dialog 是否会对生命周期产生影响? 4.1 标准的 AlertDialog 是否有影响? 4.2 全屏的 AlertDialo...

weixin_34274029的博客 121

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【Android面试】Activity生命周期专题

activity生命周期

studyForMokey的博客 437

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Activity生命周期分析

1.1经典生命周期分析 正常情况下Activity的生命周期: 1)onCreate:表示Activity正在被创建,这是Activity生命周期的第一个方法,通常用于做初始化的一些工作,如setContentView加载布局xml文件,初始化Activity需要的数据等; 2)onRestart:表示Activity正在重新启动.为什么说是”重新”启动呢?.如果Acitivity是第一次创...

Alrict的博客 682

Activity详解

Activity 是一个应用组件,用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。 每个 Activity 都会获得一个用于绘制其用户界面的窗口。窗口通常会充满屏幕,但也可小于屏幕并浮动在其他窗口之上。 目录 -生命周期 -启动模式 -onNewIntent -Intent Filter -onConfigurationChanged -数据保存与恢复 ...

madreain的博客 764

2022年最新版Android安卓面试题+答案精选(每日20题,持续更新中)【十】

好久不见,甚是想念。各位朋友们,我又携带着最受大家欢迎的面试题回来了,可能会有朋友要问了:哎呀,你咋不更了,这不是上次那一份资料用完了嘛,这不,我又厚着脸皮去问我们公司的主管:Boss,给我份面试题呗。Boss瞥了我一眼,冷笑了一下就不做声了,最终在我答应带他上白银,他才拿了这份资料给我٩(๑❛ᴗ❛๑)۶老规矩:一天20题,喜欢的朋友点个关注就不会错过我的更新了,关注我,带你装*,带你飞。

B1ueSocks的博客 6353

每日一道Android 面试题,面试途中不败题

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。这里会不断收集和更新Android基础相关的面试题,目前已收集100题。 1.Android系统的架构 应用程序 Android会同一系列核心应用程序包一起发布,该应用程序包包括Email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。 应用程序框架 开发人员可以完全访问核心应用程序所使用的API框架(

鸿蒙开发知识记录 5万+

Android 面试 100 题

极力推荐文章:欢迎收藏Android 干货分享Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公...

程序员Android 2264

Android高级工程师每日一面试题精选!(1——15题)持续更新!

会同一系列核心应用程序包一起发布,该应用程序包包括客户端,短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用语言编写的。开发人员可以完全访问核心应用程序所使用的框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块。包含一些库,这些库能被系统中不同的组件使用。它们通过 应用程序框架为开发者提供服务。的核心系统服务依赖于 内核,如安全性,内存管理,进程管理, 网络协议栈和驱动模型。 内核也同时作为硬件和软件栈之

2301_77595001的博客 910
上一篇: Android横竖屏切换和灭屏亮屏时Activity的生命周期探究
下一篇: android contacts开发总结
angusing
博客等级 码龄15年 11粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值