【原创Android游戏】NinOne V2.3.1 --加载模式的学习,界面的重新设计
上次更新后又发现了一些bug,而且是非常明显的bug,一一加以改正了过来。
猜数字游戏的功能已基本实现,不过我觉得一个应用单做一个游戏有点不太过瘾,略显单调,于是我打算基于这个,写一个n合1的游戏集成应用,一个应用集成多款游戏,这样就可以通过一个应用想玩什么游戏就玩什么游戏了,虽然可能只会实现一些简单游戏,但是反正是自己写着玩嘛,有兴趣就有动力,嘿嘿。
---------------------------------------------------------------------------------------------------------
本次更新:
1.修正了应用程序安装生成两个图标的问题
2.修正了Activity加载模式
3.游戏最终主界面的设计
4.游戏更名
---------------------------------------------------------------------------------------------------------
1.修正了应用程序安装生成两个图标的问题。
如图,在安装应用程序后出现了两个应用图标。
由于AndroidManifest.xml中两个Activity中都包含了<action android:name="android.intent.action.MAIN" />, 即有两个主进程,所以会产生两个应用图标,将RankActivity的这条语句删去,就成功解决了这个问题。
2.修正了Activity加载模式
软件的另一个bug在于,如果不断地在两个Activity之间切换,那么在多次以后,按MainActivity中的退出是不会马上退出程序的,而是不断地退到MainActivity,然后很多次以后才会退出程序,这是Activity加载模式的问题。
首先我们来了解一下Android Activity的四种加载模式:
1.stantard: 标准模式。
默认加载模式,每次通过此模式来启动目标Activity时,都会创建一个新的实例,并将该Activity加入到Task栈中(Task栈是用来管理Activity的)。
刚开始我用的就是默认的stantard模式,导致每次按下排行键,就会创建一个RankActivity的实例,并放到Task栈顶,转入RankActivity时并不销毁MainAcitvity,然后在排行榜里面按下返回键时,又重新创建一个MainActivity的实例,放到栈顶,RankActivity每次都会销毁,所以多次在Activity间切换时,实际上栈中的Activity越来越多,而且都是MainActivity,这就解释了为什么在MainActivity中按退出还是会到MainActivity,因为它在一层一层地出栈。
2.singleTop: Task顶单例模式
与standard模式基本相同,唯一的不同就是: 当将要启动的目标Activity已经在栈顶时,不再新建该Activity的实例,而是直接服用栈顶已有Activity。即“栈顶元素相同的只能有一个”,就是singleTop的意思。‘
3.singleTask: Task内单例模式
即在同一个Task内只能有一个实例,即只有一个Task,且Task内只能有一个相同的实例。
如果将要启动的目标Activity:
(1)不存在,那么创建实例,并放到Task栈顶
(2)已经位于Task栈顶,那么处理同singleTop
(3)已经存在,但是没在栈顶,那么把它上面的实例删去,让它成为栈顶。
4.singleInstance:全局单例模式
采用此种模式,系统保证无论从哪个Task启动目标Activity,只会创建一个该Activity实例,并会建一个全新的Task来存储该实例。
即: 每次目标Activity如果不存在,那么创建一个Task,将其放到Task栈顶,然后如果存在,那么把该Task放到前台即可。 这种方式每个Task中只会有一个实例。
--------------------------------------------
经过三种实验:
1.直接在MainActivity中加finish(),每次跳转都结束自己。
2.采用singleTask模式。
3.采用singleInstance模式。
第一种的话,无法保存现场,导致每次猜数字中途去看排行都会清除掉这次猜的情况,即无法保存现场。 第三种虽然能保护现场,但是跳转时间隔时间太长,不符合这种小应用,我不希望这种小应用在任何一个地方延迟过多时间。所以,我决定用singleTask模式来处理和加载两个Activity,并且在调转时先不写入数据。这样的话,跳回来时可以继续接着玩。
---------------------------------------------------------------------------------------------------------
3.游戏最终主界面的设计
在网上找图,自己P按钮都用了好久,虽然按钮设计地有点丑,但是目前就这样吧。
然后就是调整MainActivity,加ImageButton,实现Activity间的切换等,按部就班地完成了。
先来看看主界面 ( 求轻喷 ):
然后是登录界面,本来是想一并做成对话框形式,但是还有一些问题,导致没能实现,下次估计就能实现了。
点击"猜数字游戏"就进到猜数字游戏的主界面,目前来讲,这是本应用的核心功能。。
点击"关于"可以得到软件信息,包括作者,版本等等。
4.游戏更名
游戏更名为NinOne,取n合1之意。
---------------------------------------------------------------------------------------------------------------
OK,这次代码就不贴了,下一步应该好好研究下Git的使用,将代码传到github上管理好一点,总不能每次一个一个地贴啊。
本来这一次要实现数据库的应用的,但是考虑到应用有所变化,等以后可能会实现一个游戏的全局数据库,所以数据库先搁置一下。
下一步的话,先搞好Git,然后就应该好好想一下全局的架构设计了,一个猜数字游戏好说,就是无脑写算法,然后放到一个Activity中即可,但是要实现多个游戏,就应该好好想想怎么去设计整个构成以及逻辑,以及数据库的设计等等了,不能只是埋头编码,更要抬头看路,我可不想写到最后发现整个逻辑混乱至极,就像写模拟题一样,写着写着自己都写晕了,然后就gg了。
----------------------------------------------------------------------------------------------------------------------------------
下一步:
Git的使用,上传代码以及全局的架构设计。
----------------------------------------------------------------------------------------------------------------
APK: 点我下载
2014.12.19
【原创Android游戏】NinOne V2.3.1 --加载模式的学习,界面的重新设计的更多相关文章
- Android四种Activity的加载模式(转)
建议首先阅读下面两篇文章,这样才可以更好的理解Activity的加载模式: Android的进程,线程模型: http://www.cnblogs.com/ghj1976/archive/2011/0 ...
- Android四种Activity的加载模式
建议首先阅读下面两篇文章,这样才可以更好的理解Activity的加载模式: Android的进程,线程模型 http://www.cnblogs.com/ghj1976/archive/2011/04 ...
- 基于python的opcode优化和模块按需加载机制研究(学习与个人思路)(原创)
基于python的opcode优化和模块按需加载机制研究(学习与思考) 姓名:XXX 学校信息:XXX 主用编程语言:python3.5 个人技术博客:http://www.cnblogs.com/M ...
- Android开发之Activity的生命周期以及加载模式
本篇博客就来好好的搞一下Activity的生命周期,如果搞过iOS的小伙伴的话,Activity的生命周期和iOS中ViewController的生命周期非常类似.生命周期,并不难理解.一个人的生命周 ...
- Android Activity的加载模式和onActivityResult方法之间的冲突
前言 今天在调试程序时,发现在某一Activity上点击返回键会调用该Activity的onActivityResult()方法.我一开始用log,后来用断点跟踪调试半天,还是百思不得其解.因为之前其 ...
- 携程Android App插件化和动态加载实践
携程Android App的插件化和动态加载框架已上线半年,经历了初期的探索和持续的打磨优化,新框架和工程配置经受住了生产实践的考验.本文将详细介绍Android平台插件式开发和动态加载技术的原理和实 ...
- ANDROID基础ACTIVITY篇之Activity的加载模式
在这之前首先让我们先了解一下什么是Task Task,简单的说,就是一组以栈的模式聚集在一起的Activity组件集合.它们有潜在的前后驱关联,新加入的Activity组件,位于栈顶,并仅有在栈顶的A ...
- android中的LaunchMode详解----四种加载模式
Activity有四种加载模式: standard singleTop singleTask singleInstance 配置加载模式的位置在AndroidManifest.xml文件中activi ...
- 微信小游戏 4M升8M分包加载
一.微信分包加载 微信分包加载教程 嘛,因为原来的4M太小了,满足不了小游戏内容的需求,现在提升到了8M.这8M可以分包加载,而不需要一次性加载8M. 如果是老版本,则分包加载不起作用,会一次加载8M ...
随机推荐
- Magnifier.js - 支持鼠标滚轮缩放的图片放大镜效果
Magnifier.js 是一个 JavaScript 库,能够帮助你在图像上实现放大镜效果,支持使用鼠标滚轮放大/缩小功能.放大的图像可以显示在镜头本身或它的外部容器中.Magnifier.js 使 ...
- Mongodb的备份,恢复,导入与导出(cmd命令行实现)
要用MongoDB,自然就要用到数据导入导出,就自己学习了一下. 在Mongo学习(二)中就讲到了在bin目录下有一些工具,本篇就是使用这些工具进行数据的导入导出及备份恢复. 注意:以下命令均在cmd ...
- 错误 1 “System.Data.DataRow.DataRow(System.Data.DataRowBuilder)”不可访问,因为它受保护级别限制
new DataRow 的方式: DataTable pDataTable = new DataTable(); DataRow pRow = new DataRow(); 正确的方式: DataRo ...
- Visual Studio 2013 的 Xamarin 安装教程
Xamarin 配置手册和离线包下载 http://pan.baidu.com/s/1eQ3qw8a 具体操作: 安装前提条件 1. 安装Visual Studio 2013,安装过程省略,我这里安 ...
- C4.5(决策树)
C4.5是一系列用在机器学习和数据挖掘的分类问题中的算法.它的目标是监督学习:给定一个数据集,其中的每一个元组都能用一组属性值来描述,每一个元组属于一个互斥的类别中的某一类.C4.5的目标是通过学习, ...
- 关于SharPoint2013一点细节的深究
在进行SharePoint2013的开发过程中我发现在开启了某些功能,或者说是创建了个人站点之后有很多地方变了比如下面这个地方: 当然相应的URL地址也发生改变.也许很明确的我就打开了Welc ...
- 请各位帮帮忙:Android LBS应用——CityExplorer (v1.0) 调研
Hello哇各位亲!! 请各位帮帮忙:Android LBS应用——CityExplorer(V1.0)调研 嗯,这个事情是这样的,要填一个调查问卷,但是问卷中部分问题是关于这个叫做CityExplo ...
- react native 学习资料整理
入门教程 深入浅出 React Native:使用 JavaScript 构建原生应用 http://www.appcoda.com/react-native-introduction/ 中文版 h ...
- 福利->KVC+Runtime获取类/对象的属性/成员变量/方法/协议并实现字典转模型
我们知道,KVC+Runtime可以做非常多的事情.有了这个,我们可以实现很多的效果. 这里来个福利,利用KVC+Runtime获取类/对象的所有成员变量.属性.方法及协议: 并利用它来实现字典转模型 ...
- Xcode8 pod install 报错 “Generating Pods project Abort trap
Xcode8 pod install 报错 "Generating Pods project Abort trap 今天在写一个新项目的时候,使用cocoapods在执行 $ pod ins ...