【Android异常处理】异常、警告处理合集(长期更新)

警告(Warning)

过时警告

1 getResource().getDrawable(int)

解决方法:ContextCompat.getDrawable(Context, int)

2 SoundPool (int maxStreams, int streamType, int srcQuality)过时

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    AudioAttributes.Builder builder = new AudioAttributes.Builder()
            .setUsage(AudioAttributes.USAGE_NOTIFICATION)//用于通知提醒
            .setLegacyStreamType(AudioManager.STREAM_MUSIC)//对应API21之前的构造方法的第2个参数
            .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC);//播放内容为音乐
    mSoundPool = new SoundPool.Builder()
            .setAudioAttributes(builder.build())
            .setMaxStreams(4)//对应API21之前的构造方法的第1个参数
            .build();
} else {
    //noinspection deprecation
    mSoundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 0);//0表示使用系统默认配置
}

你一定很好奇API21之前的构造方法的第3个参数:
这里写图片描述

the sample-rate converter quality. Currently has no effect. Use 0 for the default.

错误(Error)

1 java.lang.NoClassDefFoundError: android.support.v7.appcompat.R$styleable【仅Eclipse】

原因:
- 1 显然我是要使用appcompat中的资源文件(如:?android:attr/actionBarSize), 但是android-support-v7-appcompat.jar是不包含资源文件的。
- 2 在网上也有人这么说:

以前遇到过这种问题,后来把项目支持的最小SDK改成14以上的,即只支持Android4.0以上的操作系统就可以了。

解决办法:
- 1 需要使用appconpat-v7的Project,然后让自己的Project依赖v7的Project
- 2 复制源码中的资源文件,放在自己项目的对应位置,放心调用
- 3 垃圾Eclipse,用Android Studio吧,骚年!

2 ActivityManager: startActivity called from non-Activity context; forcing Intent.FLAG_ACTIVITY_NEW_TASK for: Intent { cmp=(你的包名)/.(你的package).(Activity名) (has extras) }

场景:显示一个包含人员(0+)以及团队(0+)的列表的Activity,当点击团队Item时会将团队Id(teamId)作为入参传入这个Activty,接收TeamId,从网络获取列表数据(人员及下级团队)。(可以理解为递归)。如果你将你的Activity在AndroidManifest.xml添加了如下属性: android:launchMode="singleTop",旧会报这个错误。
解决方案:
- 删除该属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值