专栏首页代码GG之家SDL系列讲解(十一) SDL_QUIT流程

SDL系列讲解(十一) SDL_QUIT流程

明天会将自己的很早的一部小说发出,一次发出写的所有的六章,如果时间,或者某天突然觉得可以续写了,那么就是它又一次起航了。

工作期间,码了一个记录工作的小说,有兴趣的可以阅读。当然,文采上面,确实逊色了许多,不过能看完,你能发现一些惊喜,因为很多人物是真实存在的。

移步:

http://blog.csdn.net/a332324956/article/category/1886055

下来,继续我们 的SDL系列讲解

SDL系列讲解(一) 简介

SDL系列讲解(二) 环境搭建

SDL系列讲解(三) 工具安装

SDL是什么,能干什么,为什么我们要学习它?

SDL系列讲解(四) demo讲解

SDL系列讲解(五) 调试c代码

SDL系列讲解(六) SDL_Activity流程

SDL系列讲解(七) SDL_image教程

SDL系列讲解(八) SDL_ttf教程

SDL系列讲解(九) 异常退出分析

SDL系列讲解(十) 按键处理流程

SDL_QUIT时序图

看下创建窗口的流程图,我们简单说下过程。

原理剖析

应用上层调用 this.finish();关闭Activity的时候,走入onDestroy方法,此方法会去调用 SDLActivity.nativeQuit();进入到C代码里面Java_org_libsdl_app_SDLActivity_nativeQuit,这里向系统发出一个退出消息SDL_SendQuit();,以及一个 SDL_SendAppEvent(SDL_APP_TERMINATING)

;消息,让我们去接收,处理退出事件。发送消息,最后走入的是SDL_PushEvent方法,这个是SDL向消息队列扔入一个事件的方法。我们处理的思路是:

使用SDL_PollEvent获取到事件,通过类型过滤出来,如果是SDL_QUIT, 则退出主循环。 这里我们看到onDestroy方法,在处理SDLActivity.nativeQuit();后,进行了一个动作:

这个便是等待我们的SDLMain线程退出,起到同步等待的作用。

看完这条线路,我们再看下,如果我们在c代码main运行完毕,应用的退出流程:

SDL_QUIT主动退出时序图

SDL_QUIT主动退出代码剖析

SDLSurface在创建的时候,就会走到surfaceChanged,然后这里创建了我们的SDLMain线程,进行调用我们写的c代码,同时这里使用 sdlThread.join();等待结束,当结束的时候,调用 SDLActivity.handleNativeExit();来完成退出,然后便走到上面的那个流程了,退出SDL。

本文分享自微信公众号 - 代码GG之家(code_gg_home)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-10-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 上海设专项资金支持人工智能创新发展

    近日,上海市经济和信息化委员会联合上海市财政局印发了《上海市人工智能创新发展专项支持实施细则》(以下简称《细则》)。根据《细则》,专项资金重点支持的方向包括拓展...

    企鹅号小编
  • 全球首个机器人公民索菲亚亮相2017双12知商节 引爆全场知识产权新高潮

    近日,一场精彩绝伦的全球知商盛会——2017双12知商节国际知商高峰论坛在广州隆重举行。来自政界、商界、产业界、学术界的大咖齐聚一堂,面对面探讨知识产权未来发展...

    企鹅号小编
  • 如何处理 Python 入门难以进步的现象?

    如何处理 Python 入门难以进步的现象? 问题描述: 看视频看呀看呀看, 看完了,基础的都懂了 然后就想写点东西 可是无从下手呀,我以为基础不扎实,又去看视...

    企鹅号小编
  • TESLA V100如何让质疑GPU的流言“失声”

    【IT168 评论】GPU在人工智能来临的前夜火了,很多人的眼光也聚焦到了英伟达身上,随之而来的,流言也就多了起来。有人认为,GPU在人工智能的应用存在一定的局...

    企鹅号小编
  • 机器学习(四)——梯度下降算法解释以及求解

    机器学习(四) ——梯度下降算法解释以及求解θ (原创内容,转载请注明来源,谢谢) (本文接机器学习(二)的内容) 一、解释梯度算法 ? 梯度算法公式以及简化的...

    企鹅号小编
  • 机器学习(三)——k-近邻算法基础

    机器学习(三) ——k-近邻算法基础 (原创内容,转载请注明来源,谢谢) 一、概述 k近邻算法(kNN),是监督学习的一种,主要用于分类,通过测量不同特征值之间...

    企鹅号小编
  • IDC+BIM,或将带来数据中心新革命

    IDC+BIM,或将带来数据中心新革命。你是选择做这场革命的推动者、追随者,还是旁观者? 一、什么是BIM? 美国国家BIM标准对BIM的定义很清晰: 1.一个...

    企鹅号小编
  • [程序设计语言]-01:引言

    1.机器语言>汇编语言>高级语言 语言是人与人的一种交流工具,就比如我现在用汉语来写这篇博文来交流探讨技术问题;程序设计语言也是如此,只是交流对象不是人而是机器...

    blackheart
  • 哪种芯片架构将成为人工智能时代的开路先锋

    【IT168 评论】如果用刀来比喻芯片,通用处理器好比一把瑞士军刀,人工智能时代好比要拿刀来切肉,瑞士军刀可以拿来用,但它并非是为切肉设计的,所以效果并非最好。...

    企鹅号小编
  • 抢饭碗的来了,毕业干哪行都可能没前途!

    科技时代,我们更加怀念温暖邂逅的时光 全文共2553字,预计阅读时长3分钟 ? 这年头,找一份好工作简直比找对象还难,为了混口饭吃,几千万人假装在生活。但现在人...

    企鹅号小编

扫码关注云+社区

领取腾讯云代金券