为什么应用程序不会在6.0(API23)平台上崩溃,因为不赞成的getResources()。getColor()没有支持库?

时间:2017-05-15 16:08:50

标签: android deprecated

我决定检查如果为不包括支持库的弃用方法运行应用程序会发生什么。我预计它必须崩溃。我对我设备的Android 6.0(API23)平台使用了弃用的getResources().getColor()方法。     为什么不崩溃? (这就像以后的平台中的支持库,以支持早期的支持库)

MainActivity.java:    

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        getResources().getColor(R.color.colorAccent);
    }
}

的build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"

    defaultConfig {
        applicationId "scanandbuy.com"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    //compile 'com.android.support:appcompat-v7:25.3.1'
    //compile 'com.android.support:design:25.3.1'
}

1 个答案:

答案 0 :(得分:1)

  

为什么不崩溃?

为什么会这样?

“弃用”并不意味着“会崩溃”。 “已弃用”表示“我们希望您在替换存在的API级别上强烈考虑使用替换”。

有时,弃用的方法也会有行为更改。通常,这是出于隐私或安全原因,通常,改变的行为不是崩溃,而是更温和的东西(例如,返回空结果集而不是之前得到的结果)。检索颜色资源值没有我能想到的任何隐私或安全问题。