関数をオーバーロードしようとしています(具体的にはWebViewClient.shouldOverrideUrlLoading()
)。私のtargetSdkVersionは24、minSdkVersionは15です。このアプリケーションは "実験"であり、上記のターゲットと最小のSDKバージョンを持つ大きなものの一部になるため、値は意図的に選択されます。 私はすでにdeveloper.android.comでSupporting different platformsを読んでいます。ドキュメントによると、前述の関数には2つの異なるシグネチャがあります。 1つはパラメータタイプがWebView
とWebRessourceRequest
で、もう1つはWebView
とString
です。後者はAPIレベル24で廃止されました。複数のAPIレベルの関数のオーバーロード
私の質問は次のとおりです。どちらを優先して使用すればよいですか?長期間の互換性を保証するための新しいもの(要求オブジェクトを伴うもの)、または将来のAPIで削除される可能性のある古いもの、廃止予定のものまたは、両方を無効にすることができますか?
編集 だから私は、この擬似コードのようなものが必要になります。
public class MyWebViewClient extends WebViewClient{
if(**API level of device is higher than 24**){
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebRessourceRequest request){...}
}else{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){...}
}
}
higherSDKのメソッドはlowerSDKのものでは使用できません。 –
ユーザーのAPIレベルに応じて両方をオーバーライドできます。それぞれのAPIレベルを呼び出すことができます。 –
@PrerakSolaそして、古いもの(パラメータとして要求を持つ関数について知らないもの)は壊れませんか? – DBX12