首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

为什么小程序将成为风口?为什么要做小程序?

为什么小程序将成为风口? 因为你的竞争对手都在做小程序! 为什么要做微信小程序? 因为你的目标客户都在使用微信! 在当今,国民级别的聊天应用非微信莫属。在现今,大家说的不是留个电话吧,而更多的是加个微信吧,随着你的好友越来越多,你的时间也被这些碎片化信息包围。 据网络统计消息称:一般人平均每天都要看50次以上的微信。手指划开手机,直接点击微信,点击朋友圈更新,看看公众号文章,这类看似无聊的功能,在人类感觉无聊的时候,能起到潜意识“减压”的作用。 由此可见,微信确实深深的走入到人们生活中,而腾讯公司也因此赢得

05

Android面试每日一题(4): 哪些情况下会导致oom问题?

1、根据java的内存模型会出现内存溢出的内存有堆内存、方法区内存、虚拟机栈内存、native方法区内存; 2、一般说的OOM基本都是针对堆内存; 3、对于堆内存溢出主的根本原因有两种 (1)app进程内存达到上限 (2)手机可用内存不足,这种情况并不是我们app消耗了很多内存,而是整个手机内存不足 4、而我们需要解决的主要是app的内存达到上限 5、对于app内存达到上限只有两种情况 (1)申请内存的速度超出gc释放内存的速度 (2)内存出现泄漏,gc无法回收泄漏的内存,导致可用内存越来越少 6、对于申请内存速度超出gc释放内存的速度主要有2种情况 (1)往内存中加载超大文件 (2)循环创建大量对象 7、一般申请内存的速度超出gc释放内存基本不会出现,内存泄漏才是出现问题的关键所在 8、内存泄漏常见场景 (1)资源对象没关闭造成的内存泄漏(如: Cursor、File等) (2)全局集合类强引用没清理造成的内存泄漏(特别是 static 修饰的集合) (3)接收器、监听器注册没取消造成的内存泄漏,如广播,eventsbus (4)Activity 的 Context 造成的泄漏,可以使用 ApplicationContext (5)单例中的static成员间接或直接持有了activity的引用 (6)非静态内部类持有父类的引用,如非静态handler持有activity的引用 9、怎么对内存进行优化呢 三个方向 (1)为应用申请更大内存,把manifest上的largdgeheap设置为true (2)减少内存的使用 ①使用优化后的集合对象,比如SpaseArray; ②使用微信的mmkv替代sharedpreference; ③对于经常打log的地方使用StringBuilder来组拼,替代String拼接 ④统一带有缓存的基础库,特别是图片库,如果用了两套不一样的图片加载库就会出现2个图片各自维护一套图片缓存 ⑤给ImageView设置合适尺寸的图片,列表页显示缩略图,查看大图显示原图 ⑥优化业务架构设计,比如省市区数据分批加载,需要加载省就加载省,需要加载市就加载失去,避免一下子加载所有数据 (3)避免内存泄漏 编码规范上: ①资源对象用完一定要关闭,最好加finally ②静态集合对象用完要清理 ③接收器、监听器使用时候注册和取消成对出现 ④context使用注意生命周期,如果是静态类引用直接用ApplicationContext ⑤使用静态内部类 ⑥结合业务场景,设置软引用,弱引用,确保对象可以在合适的时机回收 建设内存监控体系: 线下监控: ①使用ArtHook检测图片尺寸是否超出imageview自身宽高的2倍 ②编码阶段Memery Profile看app的内存使用情况,是否存在内存抖动,内存泄漏,结合Mat分析内存泄漏 线上监控: ①上报app使用期间待机内存、重点模块内存、OOM率 ②上报整体及重点模块的GC次数,GC时间 ③使用LeakCannery自动化内存泄漏分析 10、真的出现低内存,设置一个兜底策略 低内存状态回调,根据不同的内存等级做一些事情,比如在最严重的等级清空所有的bitmap,关掉所有界面,直接强制把app跳转到主界面,相当于app重新启动了一次一样,这样就避免了系统Kill应用进程,与其让系统kill进程还不如浪费一些用户体验,自己主动回收内存

04

游戏手机平台简单介绍

由于手机游戏市场的巨大潜力和无限商机,许多厂商纷纷推出功能强大的手机并提供开放应用平台,而相关手机游戏开发商也是相继投入,与手机厂商或运营商者合作,推出各种跨平台的解决方案。从最早的内嵌式游戏到最新的3D游戏基于各种技术和平台的手机游戏也是分类繁多,为了让读者更好了解各个游戏平台的特点和主要功能,我们将通过下文对目前市面上流行的手机游戏平台做一个简单的介绍。 嵌入/内置式游戏 早期的手机功能简单、屏幕也仅仅是单色,手机厂商能做的,就是在手机内置一些简单的游戏。这些游戏都是厂商以自己的专属平台所开发的,这些发售时就内置的游戏在手机预存了多少就是多少,用户无法自己新增或删除。 诺基亚可说是最早推出的厂商之一,90年代末的诺基亚5110上的最经典的“贪食蛇”游戏到现在还让那些第一代手机玩家们津津乐道。其后其他一些手机厂商顺应潮流步伐,纷纷在新推出的手机里加入游戏。如爱立信T28般狭小的屏幕上也可以玩精彩的“俄罗斯方块“游戏。 尽管后来在GPRS服务还没普及前,一些手机厂商也开发出一些类似短信互动游戏,并通过发送文字或简易图形(当时Nokia手机可传送SMART信息),来达到消遣娱乐的目的。如西门子2118内置的“功夫小子”就能够通过短信的方式进行对战。不过这种短信游戏,每发一则就要扣款一次,如果游戏内容庞大,玩起来的费用非常可观。因此随着手机功能的增强,SMS游戏的魅力渐失,如今已慢慢淡出市场,演变成其它应用。 In-Fusio ExEn娱乐平台 即使是手机屏幕变成了彩色,内置游戏如何好玩,但总而也有玩腻的时候。因此用户们也希望能够玩新的游戏或者象下载图片、铃声那样通过无线网络下载新的游戏。法国In-Fusio公司看中了这个市场,在2001年推出了ExEn(Execution Engine)游戏平台。通过把专属的ExEn芯片加入手机内,赋予手机彩色画面与流畅的执行速度,让手机也有掌上游戏机那样的效果。 2002年该公司再度开发出ExEn V2引擎,进一步提升了手机运行手机游戏的速度和表现力。ExEn可说是第一个交互式游戏的开放平台,让有意开发手机的厂商加入开发的行列。ExEn是一个专用于移动通信设备游戏的结构紧凑的JAVA虚拟机。一旦和终端集成在一起,它可下载游戏并进行本机游戏。因此只要内置ExEn芯片的手机,就可以从ExEn内容供货商通过GSM或GPRS网络技术,下载到手机上玩,且玩腻之后可以将它删除,继续下载其它的游戏。一个ENEX游戏通常15K到55K不等,通常为30K左右。 下载的游戏储存在手机的闪存中;游戏的数量取决于闪存可用于游戏的空间和每一个游戏的大小。目前支持ExEn技术的手机厂商也比较多,有阿尔卡特如735/535、松下X88/86、萨基姆my x5、飞利浦530/350与三菱m720等等,而国内厂商则有波导(BIRD)、CECT、科键(Kejian)大显等。 ENEX平台游戏在使用中还具备这样一些特点即下载最新目录上的游戏是免费的,但需要支付下载时的通信费用,然后在离线状态下(单机)玩游戏则是完全免费。但是如果在游戏结束后发送游戏结果到“排行榜”的短信或要求升级过关的短信则会收取1.50/条 (中国移动短信成本0.10/条除外)费用。 不过ExEn平台游戏没有得到诺基亚和摩托罗拉这样一线品牌的支持,也没有庞大软件开发团队,再加上In-Fusio公司只把ExEn游戏放在少数系统来下载,目前仅有德、法、意、西、英、荷等欧洲国家,以及我国共七个国家能下载到ExEn游戏。而且目前可下载的ExEn的游戏也非常有限,因此与开放程度更高,游戏更为丰富的新兴JAVA游戏相比其可持续发展的前景就相对比较暗淡一些。 J2ME平台 J2ME(JAVA 2 Micro Edition)平台是目前最火暴的手机游戏平台,尽管它还可以下载和安装一些小的应用程序。J2ME简单的可以理解为JAVA的移动版本,其MIDP(Mobile Information Device Profile,移动信息装置简表)架构就是专门为手机与PDA而设计。 目前MIDP有1.0和2.0之分,后者在兼容性以及游戏的多媒体表现力如音效和振动方面有更好的效果,此外通过测试软件显示,支持MIDP2.0的JAVA游戏在图形运行能力对比1.0版本也有更优秀的表现。目前支持MIDP2.0手机主要为03年下半年以后发布的手机如索爱K700、摩托罗拉V300、诺基亚6230等。 同时,以J2ME平台开发的程序叫做MIDlet,可以直接从在线下载后离线运行,或从PC通过数据线、红外或者蓝牙传输到手机上。由于J2ME程序都很小,只有几十K,所以又被称为K-JAVA。由于K-JAVA(J2ME)是开放平台,因此任何程序设计师甚至程序编写爱好者都能到Sun网站下载J2ME开发工具,为手机写JAVA程序。 此外,J2ME的MIDlet文件都是由.jad(JAVA Description

01
领券