Android组件-Activity生命周期与回调机制

安卓课后笔记2.2 Activity生命周期 生命周期回调方法 阅读详情

熟悉Activity,属于Android开发的基本要求,理解好Activity的回调,才可以算得上了解Activity,至于Activity的其他特性,则需要更多的时间去掌握。

本文主要针对Activity的回调做个说明,接下来就先从Activity为我们提供了7个主要的回调方法开始,进行详细的介绍:

public class Activity extends ApplicationContext {
     protected void onCreate(Bundle savedInstanceState);

     protected void onStart();
     
     protected void onRestart();

     protected void onResume();

     protected void onPause();

     protected void onStop();

     protected void onDestroy();
 }

这7个方法之间存在一定的顺序关系,我们先看下图:(注意,非全屏不透明的断句要断在非后面,也就是“非”“全屏不透明”的意思)


从上图我们可以总结几个关键点:

1. onCreate -> onStart -> onResume ,执行了onCreate必然会执行接下来的onStart -> onResume,执行了onStart必然会执行接下来的onResume。

2. onPause与onResume之间存在小循环,这个小循环能生效的前提是需要启动一个非全屏不透明的Activity(注意:非全屏不透明的断句要断在非后面,也就是“非”“全屏不透明”的意思)。那什么是非全屏不透明呢?没有全屏或者半透明的样式,都属于非全屏不透明的范畴。举两个例子,当Activity是一个Dialog样式,就是非全屏了;当透过新的Activity还可以看到旧Activity的时候,就是半透明了。在启动和关闭这种非全屏不透明的Activity时,系统就会且仅会回调onPause->onResume,而不会走到onStop->onStart。

3. 我们可以归纳一个回调次数的大小关系,onResume >= onPause >= onStart  >= onStop >= onCreate >= onDestroy。为什么是大于等于呢?很有可能,这个Activity只是完整滴走过了每一个回调就完成他的使命了,因此是大于等于。至于onRestart,基本可以用onStart取代,就不加入排序了。

4. 由于onStart,onResume,onPause,onStop等存在多次调用的可能,应当尽量减少耗时操作

5. 可以在onCreate和onDestroy,onStart和onStop,onResume和onPause之间任意选择一组,进行正反两个动作。该如何选择有一些基本准则,但更多时候需要根据实际情况判断:

  a). 正反两个操作对系统资源消耗较少,如注册和反注册广播,一般选择onCreate和onDestroy

  b). 对系统消耗较大,如动画,重力感应器等,一般选择onStart和onStop来开启和关闭

  c). 对状态很敏感的操作,如一些关键开关变量的控制,状态值的校对等,可以选择onResume和onPause

  d). 需要特别指出的是关于资源文件的操作,比如数据库,文件IO等,一定不要放在以上任意一组中进行,应当养成良好的习惯,对资源文件的操作及时关闭。

6. Android对于Activity的跳转采用展示优先原则,优先调用新Activity(当前可见Activity)负责显示的api如onCreate,onStart,onResume,然后再调用旧Activity(当前不可见Activity)负责暂停关闭等操作的api如onPause,onStop,onDestroy。

7. 根据6的原则,假如从FirstActivity 跳转到 SecondActivity,回调的顺序是SecondActivity的onCreate -> onStart -> onResume,然后才到FirstActivity的onPause -> onStop -> onDestroy。

8. onDestroy只有在显式调用该Activity的finish方法或者由于内存原因被系统回收时才回调,如果只是context.startActivity等方式启动一个新的Activity,系统是不会马上回调旧Activity的onDestroy方法的。

9. 结合第8点以及上图的生命周期示意图,做一个比较有趣的总结,在Activity各个时期执行finish的路线图:

1. onCreate 时调用 finish
将会 onCreate --> onDestory

2. onStart 时调用 finish
将会 
onCreate --> onStart --> onStop --> onDestory

3. onResume 时调用 finish
将会 
onCreate --> onStart--> onResume --> onPause --> onStop --> onDestory

4. onPause 时调用 finish
将会 
onCreate --> onStart --> onResume --> onPause --> onStop --> onDestory

5. onStop 时调用 finish
将会 
onCreate --> onStart --> onResume --> onPause --> onStop --> onDestory

6. onDestory 时调用 finish
将会 
onCreate --> onStart --> onResume --> onPause --> onStop --> onDestory


综上,Activity生命周期中关键API的关键信息基本介绍清楚了,在Activity的所有系统回调API中还有两个比较常见的,在此简单介绍一下。

1. 首先是onActivityResult,大家应该都比较熟悉,比如在FirstActivity调用了this.startActivityForResult,那SecondActivity可以setResult,把数据返回给FirstActivity.onActivityResult来处理。

2. 相对比较陌生的是onNewIntent,当Activity声明为singleTask或者singleInstance的时候,如果这个Activity已经启动,那么再次启动该Activity的时候会走到onNewIntent。



Activity生命周期及常用方法详解 在Android开发中,Activity作为与用户交互的主要界面,其生命周期和常用方法的理解对于开发者来说是至关重要的。下面我将从技术难点、面试官关注点、回答吸引力以及代码举例四个方面,对Activity的生命周期及常用方法进行详细阐述。以上代码示例展示了Activity生命周期中常用的回调方法及其基本用法。在实际开发中,可以根据具体需求进行扩展和修改。Activity的生命周期相对复杂,包含了多个状态和回调方法。 阅读详情

相关推荐

UFS3.1 UTP层深度解析:从协议原理到工程排错实战

UFS(Universal Flash Storage)作为高性能嵌入式存储接口标准,其核心在于UTP(UFS Transport Protocol)传输层对命令语义、错误恢复与带宽协同的精密管控。理解UTP层本质,需超越‘命令搬运’表象,深入Protocol State Machine状态机、UPIU数据单元格式及Command Descriptor Table内存约束等底层机制。该层直接决定UFS3.1系统的稳定性、吞吐上限与故障可诊断性——例如TID复用引发死锁、Data Segment Length

weixin_34161064的博客 413

深入分析Android中Activity的onStop和onDestroy()回调延时及延时10s的问题

一、起因 之前一个比较老的项目中,是使用Activity的名字作为tag来标识网络请求的。在Activity的onDestroy回调中根据这个标识取消所有的网络请求。但是在部分页面,出现了比较奇怪的问题:从Activity A打开Activity B,然后finish掉Activity B回到Activity A,这时候再次打开Activity B,Activity B中的网络请求会出现概率性无...

ZCJ风飞的博客 5142

深入理解Android Activity生命周期测试与实践

本文还有配套的精品资源,点击获取 简介:Android Activity作为应用程序的核心界面组件,其生命周期管理是开发者必须精通的关键概念。Activity的生命周期包括创建、运行、暂停、停止和销毁等状态,每个状态的转换由系统自动控制。开发者需要理解这些状态和相应的方法回调,如 onCreate() , onStart() , onRe...

weixin_35835030的博客 1377

Activity生命周期的学习和验证

1.引子 Activity就像是英文词汇本的Abandon,开篇就能碰到,关于Activity生命周期的博客教程非常多,侧面说明Activity非常重要,其中的Activity的生命周期又是重中之重,面试官非常喜欢拿这个作为考点,因为掌握Activity生命周期对提高应用的健壮性具有很大的帮助。因为只看教程不自己总结实践的话,对其理解总会差点意思,自己动手总结了印象才深刻。 2.Activity生...

lansoul1987的专栏 1589

Android开发中Fragment与Activity的回调交互实战详解

在Android应用开发中,Fragment和Activity是构建用户界面的两大核心组件。随着移动应用复杂度的提升,单一Activity承载多个功能模块的需求日益增长,Fragment因此成为实现模块化、可复用UI的重要手段。本章将深入剖析Fragment与Activity之间的依存关系,阐述Fragment作为Activity的一部分如何实现逻辑与视图的解耦,同时强调其生命周期受宿主Activity控制的本质特性。

weixin_35755188的博客 1069

Android中Fragment与Activity的通信机制详解

本文还有配套的精品资源,点击获取 简介:在Android开发中,Fragment和Activity是构成用户界面的基础组件,它们之间有效的通信对实现功能丰富的应用至关重要。本文将深入探讨Fragment与Activity之间的数据传递和交互方法,包括直接和间接通信机制,生命周期协调,以及使用Android Jetpack Navigation组件等技术要点。 1. F...

weixin_42515392的博客 1247

Activity生命周期(Activity弹出Dialog会触发Activity生命周期吗)

Activity弹出Dialog对生命周期有什么影响_weixin_43976036的博客-优快云博客_activity弹出dialog生命周期Activity弹出 Dialog 对生命周期有什么影响我们知道,生命周期回调都是 AMS 通过 Binder 通知应用进程调用的;而弹出 Dialog、Toast、PopupWindow 本质上都直接是通过 WindowManager.addView() 显示的(没有经过 AMS),所以不会对生命周期有任何影响。如果是启动一个 Theme 为 Dialog 的

C++ JAVA的专栏 4270

MODNet模型轻量化实战:从PyTorch到NCNN移动端部署,模型缩小75%性能不减

本文详细介绍了MODNet模型轻量化实战,从PyTorch到NCNN移动端部署的全过程。通过量化压缩和推理优化,模型体积缩小75%的同时保持性能不减,在千元级安卓设备上实现25FPS的实时人像抠图。文章深入解析MODNet架构、PyTorch到ONNX转换的陷阱与解决方案,以及NCNN量化部署的极致优化实践,为移动端实时人像抠图提供了技术突破与工程实现。

weixin_29098117的博客 296

Android基础(二):Android生命周期

Android生命周期 指安卓从开始到结束的整个过程 Android系统进程优先级,从高到低分别为: 1.前台进程: 进程中的activity正在与用户进行交互 进程中的组件被前台进程调用或者正在执行生命周期中的回调函数,如onCreate()等 2.可见进程: 进程的界面能被用户看见但不与与用户交互 进程中的组件被可见进程调用 3.服务进程: 进程包含已启动的服务 4.后台进...

qq_37504771的博客 1168

基于单片机直流电机调速控制系统设计

*单片机设计介绍,基于单片机直流电机调速控制系统设计。

2201_75940997的博客 2781

5.30华为OD机试真题 新系统 - 链表数字游戏 (Java/Py/C/C++/Js/Go)

5.30华为OD机试真题 新系统 - 链表数字游戏 (Java/Py/C/C++/Js/Go)

算法大师! 1119

Android之旅三 Activity详解

1、 在Android系统中Activity提供可视化的用户界面,一个Android应用通常由多个Activity组成,多个Activity组成了Activity栈,当前活动的Activity处于栈顶,Activity有自己的生命周期,由Android系统控制。 2、 在Activity上面是一个Window对象,Window上面通常是一个布局容器兑现Layout,再上面是...

weixin_34232363的博客 230

innovus:insert Power Switch失败,报告not covered by a row问题解析

这个问题就是switch找不到可以放置的row,分析就从两方面入手,一方面从voltage area下手,一方面从row和site入手。检查发现voltage area设置正确,row也存在,只不过lef里缺少对应switch的双倍高的site。更多学习内容请关注「拾陆楼」知识星球。

m0_61544122的博客 1159

2.Android四大组件之一Activity

Activity的理解: 1). 一个提供一个可以与用户进行交互的UI的应用组件 2). Servlet: 是服务器端用来处理请求的组件 1. 必须继承一个特定的类 2. 需要配置(全类名,虚拟路径) 3. 它的对象不是我创建的, 而是系统创建 4. 有一定的生命周期方法 init()

zhangmengLOVE_007的专栏 511

Android日志实战——车机日志获取(十五)

这个项目中的 Log 管理系统,其实只是将系统原生 Log 进行输出并导出,并没有太复杂的操作。还有一种 Log 管理系统需要对 Android 原生 Log 系统进行重写,例如我们使用 Log.d(tag, msg) 打印 Log,需要我们根据 tag 信息将不同模块的 Log 数据写入不同的本地文件下,这样可以方便不同模块查看自己的 Log,追踪异常问题。

小旭的专栏 3779

手把手教你学Simulink--双足机器人的反步控制方法仿真

本文介绍了在Simulink中基于反步控制方法进行双足机器人仿真研究的步骤。主要内容包括:1)准备工作,包括MATLAB/Simulink安装和相关工具箱配置;2)构建简化双足机器人模型;3)设计反步控制器,阐述其递归设计原理及Lyapunov函数构造方法;4)通过MATLAB Function块实现控制逻辑并连接模型;5)仿真参数配置和结果分析。文章强调反步控制适用于非线性系统,通过逐步构造虚拟控制律保证系统稳定性,并指出需要多次调试和查阅文献来优化控制效果。该教程为研究双足机器人运动控制提供了实用的仿真

MHD0815的博客 153

【精华】Android面试精华总结——Activity组件

一、Activity简介   Activity是Android应用中负责与用户交互的组件,可以理解成Swing编程中的JFrame控件。多个Activity组成Activity栈,当前活动的Activity位于栈顶。 二、Activity生命周期 三、Activity的启动方式 1.显式启动 比较快速,创建Intent后直接指定包名和类名即可。 2.隐式启动 不显示指定组件,通过动作、类型、数据...

time-space的博客 409

92. SAP ABAP 系统里长文本 Long Text 的设计和读取函数 READ_TEXT 的详细讲解

SAP ABAP中的长文本(Long Text)是指在SAP系统中存储和管理较长文本信息的一种机制。长文本通常用于存储描述性信息、注释、说明等,这些文本信息可能超过了标准数据库表字段的长度限制。 长文本的作用主要有以下几点: 1. 更多的信息存储:长文本允许您存储和显示比标准表字段允许的更多信息。例如,产品描述、用户注释、维护计划等可能需要大量的文本来详细描述。 2. 更好的可读性:长文本提供了更好的文本格式化选项,可以改善可读性。用户可以使用段落、列表、字体样式等格式化文本,以便更容易地理解和阅读。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1997

Android --first

接触安卓开发不到一个月,完全菜鸟级别。 计划:四大组件的机制。 activity的生命周期。 今天完成了CoolWeather的代码,收获:明白回调机制 sharedpreferences当做临时的存储使用。方法:用PreferenceManager.getDefaultSharedPreferences(context)获得对于该类对象的控制权。 安卓中许多都需要通过Manager的方

点滴汇聚 285

【数字孪生工业应用实战】第2篇:数字孪生系统架构设计与技术选型——从“作秀”到“实干”的骨架构建

本文系统剖析了数字孪生系统从“作秀”到“实干”的架构设计关键。针对多数项目在POC转生产时因架构混乱、选型盲目而失败的问题,深入阐述了四层分层架构(感知层、传输层、模型层、应用层)的设计原则,重点解析了感知层的异构适配与边缘预处理、传输层的异步解耦与多模式通信等工程细节。结合OPC UA、MQTT、EdgeX Foundry等主流技术选型对比,以及汽车焊装车间边缘智能网关的实战代码,提供了从零搭建微型孪生系统的完整指导。旨在帮助工程师建立清晰的选型决策逻辑,构建稳定、可演进的数字孪生“骨架”。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 266

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Android四大组件之Activity

Android有四大基本组件,他们分别是: Activity Service(服务) BroadcastReceive(广播) Content Provider(内容提供者) 这四大组件在Android开发中必不可缺,今天我们来介绍一下Activity Activity本质 Activity是Android开发中必不可缺的,他是一个界面的载体,如果你想显示出一个界面,那么必须经过Act...

ZCJ-阿杰的博客 211

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Android 中的 Activity

Activity是一个Android的应用组件,它提供屏幕进行交互。每个Activity都会获得一个用于绘制其用户界面的窗口,窗口可以充满哦屏幕也可以小于屏幕并浮动在其他窗口之上。一个应用通常是由多个彼此松散联系的Activity组成,一般会指定应用中的某个Activity为主活动,也就是说首次启动应用时给用户呈现的Activity。将Activity设为主活动的方法,如下面代码所示需要在AndroidManifest文件中添加以下内容........

Speculator_m的博客 473

深度学习工具包 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")

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

计算机移动设计开发,[计算机软件及应用]android移动应用设计与开发--第04章

[计算机软件及应用]android移动应用设计与开发--第04章 移动应用设计与开发第章以及通信机制生命周期交互机制状态生命周期的事件回调方法属性解析的跳转本章导读生命周期在应用程序中,所有的组件都有它自己的生命周期,表示从这一组件的创建到销毁的整个过程。在这一过程中,组件会在活动、非活动以及可见或不可见等状态中不断因应用场景的改变而进行切换。这一小节中,我们将对系统中组件的生命周期进行详细的介绍...

weixin_39616855的博客 237

Android学习之Service生命周期及其通信

ServiceService是Android中的最重要的四大组件之一。google官方给的定义是:Service(服务)是一个没有用户界面的在后台运行执行耗时操作的应用组件。其他应用组件能够启动Service,并且当用户切换到另外的应用场景,Service将持续在后台运行。另外,一个组件能够绑定到一个service与之交互(IPC机制),例如,一个service可能会处理网络操作,播放音乐,操作文件

一大三千的博客 1506

Android Activity个人理解

Activities Activity是一个应用组件,主要用于提供界面和用户交互。就像打电话,发短信等等,几乎是所有应用 的核心。它能提供一个用户窗口,并填充手机屏幕,但比屏幕小一点点。每个活动之间可以相互覆盖。 (Activity暂时就叫它活动吧) 一般,一个应用基本就是由许多个活动构成。而在这么多个活动中有个一主活动MainActivity,作为应用的主界面。可以提供给

qq_38773557的博客 306

一、四大组件之Activity 组件

详解 Android 的 Activity 组件 Activity 的生命周期 和 J2ME 的 MIDlet 一样,在 android 中,Activity 的生命周期交给系统统一管理。与 MIDlet 不同的是安装在 android 中的所有的 Activity 都是平等的。 Activity 的状态及状态间的转换 在 android 中,Activity 拥有四种基本

FUNY丶 1452
上一篇: Android组件-Android Application
下一篇: Android组件- 广播的静态动态有序无序与优先级
shiftjava
博客等级 码龄19年 1粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值