当前位置:  编程技术>移动开发
本页文章导读:
    ▪bit地图 内存溢出OOM的解决方法分享        bitmap 内存溢出OOM的解决办法分享昨天遇到这个问题就是从一个输入流里调用BitmapFactory.decodeStream(this.getContentResolver().openInputStream(uri))得到一个bitmap报的错。第一次调用都没问题,第二次再次.........
    ▪ 金山封杀App广告 ,从走360后尘        金山封杀App广告 ,从走360老路 继门户网站、QQ软件广告一度被屏蔽之后,尚在成长中的App开发者也遭遇了同样的烦恼。     近日,金山网络推出了其手机安全产品——手机毒霸Android版,拦.........
    ▪ Objective-C中Extension与Category的施用       Objective-C中Extension与Category的使用Objective-C 2.0增加了class extensions用于解决两个问题: 允许一个对象可以拥有一个私有的interface,且可由编译器验证。支持一个公有只读,私有可写的属性。 私有.........

[1]bit地图 内存溢出OOM的解决方法分享
    来源: 互联网  发布时间: 2014-02-18
bitmap 内存溢出OOM的解决办法分享
昨天遇到这个问题就是从一个输入流里调用BitmapFactory.decodeStream(this.getContentResolver().openInputStream(uri))得到一个bitmap报的错。第一次调用都没问题,第二次再次调用就会报上面那个内存溢出的问题。而且有的手机报有的手机不报。研究了半天终于解决。首先分析了下原因,应该是图片占用的内存超过了系统虚拟机可分配的最大限制。不同手机可能分配的最大值不一样。后来找到解决办法主要是设置BitmapFactory.Options。
BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
      bitmapOptions.inSampleSize = 4;
      bitmap = BitmapFactory.decodeStream(this.getContentResolver()..openInputStream(uri), null , bitmapOptions);


 

有的说要加上bitmapOptions.inJustDecodeBounds = true;但是我加上后得到的bitmap就为null。去掉之后就可以。按照上面的方法就解决问题了。最好把bitmap在不用的时候回收一下:
if (bitmap != null && !bitmap.isRecycled())
    bitmap.recycle();
某位大神的图片占用内存的算法:
介绍一下图片占用进程的内存算法吧。
android中处理图片的基础类是Bitmap,顾名思义,就是位图。占用内存的算法如下:
图片的width*height*Config。
如果Config设置为ARGB_8888,那么上面的Config就是4。一张480*320的图片占用的内存就是480*320*4 byte。
前面有人说了一下8M的概念,其实是在默认情况下android进程的内存占用量为16M,因为Bitmap他除了java中持有数据外,底层C++的skia图形库还会持有一个SKBitmap对象,因此一般图片占用内存推荐大小应该不超过8M。这个可以调整,编译源代码时可以设置参数。
 // Eliminate extra GCs during startup by setting the initial heap size to 4MB.
 // TODO: We should restore the old heap size once the activity reaches the idle state
 VMRuntime.getRuntime().setMinimumHeapSize(INITIAL_HEAP_SIZE);


 


    
[2] 金山封杀App广告 ,从走360后尘
    来源: 互联网  发布时间: 2014-02-18
金山封杀App广告 ,从走360老路

 继门户网站、QQ软件广告一度被屏蔽之后,尚在成长中的App开发者也遭遇了同样的烦恼。

    近日,金山网络推出了其手机安全产品——手机毒霸Android版,拦截应用内置广告是其主打的卖点之一。不过,在应用中加入广告是移动互联网最主要的盈利模式。手机毒霸的这一功能在上周遭到了App开发商和广告代理商的强烈反对。

    有法律界人士表示,金山网络此举涉嫌不正当竞争,但是,对于金山网络所指的“恶意广告”难以鉴定将是App开发商维权的难点。

    而有下载过手机毒霸的用户则向《每日经济新闻》记者表示,既然应用开发者可以开发App广告,用户也有选择屏蔽的权利,“没有那些恶意弹出的广告,用户体验也会好很多”。

    威胁App开发商生存

    9月14日上午,多盟、触控科技等19家App开发商和广告代理商发布声明,称金山网络的手机毒霸产品拦截App应用内所有广告,威胁开发者基本生存,挑战移动互联网基本商业模式。

    该声明还称,一旦用户使用了手机毒霸,毒霸会试图获取用户手机root权限,直接篡改开发者的App,侵犯开发者的合法权益。同时,手机毒霸不区分广告形式,全部予以屏蔽,连用户认可的Banner等成熟的广告形式也都一律屏蔽,全国空气污染指数中的广告也被毒霸拦截。

    但是,这一说法遭到了金山网络的反对,该公司相关人士向记者表示,手机毒霸并不是针对所有广告,而是针对一些恶意广告对用户的骚扰。“体验好的广告我们并不会拦截,相信不会引起开发者的反感。”

    与 “让用户上网免受恶意广告打扰”相对应的是,这些广告是移动互联网行业主要收入来源之一。

    帷千动媒CEO谢大新在接受《每日经济新闻》记者采访时透露:“现在暂时还没有很大的影响,之所以发这个声明,主要是出于对行业未来发展的考虑。”

    中国互联网络信息中心统计报告显示,截至今年6月底,中国网民数量达到5.38亿,其中手机网民达到3.88亿,手机首次超越电脑成为第一大上网终端。

    艾瑞咨询数据显示,2012年中国移动互联网市场规模将达976亿元,同比增长148.3%.移动互联网行业的春天似乎正在来临。

    或催生优秀收费应用

    金山网络屏蔽各大移动应用平台广告的举措引起广泛热议。

    有下载过手机毒霸的用户向记者表示,既然应用开发者可以开发App广告,用户也有选择屏蔽的权利,“如果以后没有那些恶意弹出的广告,用户体验也会好很多”。

    对此,业内人士的态度则截然相反。豌豆荚一名创始人认为,金山毒霸只是想尽快找到一个占领用户手机的切入点,它的市场占有率目前还很小,所以不会对行业造成太大影响。

    记者了解到,移动互联网的广告盈利目前并不理想。国外一家针对移动应用的营销平台Trademob调查显示,大概有40%左右的移动广告点击是由于误按或欺诈点击。而安全软件的拦截无疑会让广告主质疑移动互联网广告投资的效益,也可能会阻碍移动广告市场的发展。

    知识产权法律师游云庭接受《每日经济新闻》记者采访时表示,金山网络的行为无可厚非,但是却忽略了其屏蔽的广告是其他企业盈利的主要来源。“金山涉嫌不正当竞争。但是目前很难界定它屏蔽的尺度,这些企业的抗议可能不会奏效,双方可能还是会用协商或合作的方式解决。”

    公开数据显示,Android平台手机用户中,内嵌广告方式的接受度最高,比例达到36.5%,其次一次性下载付费的比例为30%,而对于道具付费的模式认可程度仅有17.6%.

    一名移动互联网人士猜测,虽然没有办法阻止金山以及其他安全厂商的这种行为,但移动应用开发者可能已经意识到了单纯依赖广告盈利的风险,这会催生更多优秀的收费类应用。


    
[3] Objective-C中Extension与Category的施用
    来源: 互联网  发布时间: 2014-02-18
Objective-C中Extension与Category的使用

Objective-C 2.0增加了class extensions用于解决两个问题:

  • 允许一个对象可以拥有一个私有的interface,且可由编译器验证。
  • 支持一个公有只读,私有可写的属性。
  • 私有接口(Private Interface)

    Objective-C 2.0以前, 若要定义私有函数,通常是在实现文件中声明一个"Private" category:

    @interface MyClass (Private)
     - (id)awesomePrivateMethod;
    @end

    然而, 类的私用方法通常是希望实现在类的@implementation块中的,而不是像上面的Category的方法那样实现在独立的@implementation区块中。事实上,Category仅仅是弥补了Objective-C缺少public/private限定的不足。

     

    真正的问题是Objective-C编译器会认为在Category中声明的方法将会在别处实现,所以编译器并不会尝试确认它们是不是真得都被实现了。也就是说,开发者声明的方法或属性,但有可能并未实现,而且编译器也不会有什么警告。编译会以为它们将在别的地方或独立的文件中实现。

     

    使用class exteionsion,在其中声明的方法和属性的实现将放在class的@implementation区块中。否则,编译器就会报错。

    // someClass.m 
    @interface someClass () 
    -(void)extend; 
    @end 
     
    @implementation someClass 
    // 所有声明在头文件或父类中方法的实现 
    // 或者一些私有函数 
    -(void)extend { 
        // implement private method here; 
    } 
     
    @end

     

    公有可读、私有可写的属性(Publicly-Readable, Privately-Writeable Properties)

    实现一个不可变(immutable)的数据结构通常有一个好处是外部代码不能用setter修改对象的状态。然而,可能又希望它在内部又是一个可写的属性。Class extensions可以做到这一点:在公共接口(类的声明中)中,开发者可以声明一个属性是只读的,随后在类扩展中声明为可写。这样,对外部代码而言,该属性将是只读的,而内部代码却可以使用它setter方法。

     

    @interface MyClass : NSObject
    @property (retain, readonly) float value;
    @end
     
    // 私有的extension, 隐藏在主实现文件中.
    @interface MyClass ()
    @property (retain, readwrite) float value;
    @end
    


    看起来相似,其实不同

    Class extension常常被误解为一个匿名的category。它们的语法的确很相似。虽然都可以用来为一个现有的类添加方法和属性,但它们的目的和行为却是不同的。

     

    参考: Apple Documenation

    原文地址: Minutia on Objective-C Categories and Extensions

    转载请注明出处: http://blog.csdn.net/horkychen


        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3