我的功能已弃用的应用程序可以在未来的 Android 版本中正常运行吗?

Posted

技术标签:

【中文标题】我的功能已弃用的应用程序可以在未来的 Android 版本中正常运行吗?【英文标题】:My app with deprecated function can work well in future Android version? 【发布时间】:2013-05-20 08:08:09 【问题描述】:

在我的应用程序 android:minSdkVersion="8" 中,我收到以下警告。现在我的代码在 API 17 中没问题, 你能告诉我我的应用程序在未来的 Android 版本中是否可以一直运行良好吗? 谢谢!

构造函数 simplecursoradapter(context, int, cursor, string[], int[]) 已弃用

【问题讨论】:

已弃用的功能,不代表会被删除! 而你永远不知道它什么时候会消失 【参考方案1】:

这取决于那些人,他们何时可以删除它取决于他们。 Deprecated meaning? 在这里。

通过查看 SimpleCursorAdapter 文档,您将获得两种方法。您正在使用的一种 SimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to) 另一个是 SimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags) 在弃用之前的 API 11 后添加。

docs 说

此构造函数在 API 级别 11 中已弃用。此选项为 不鼓励,因为它会导致在 应用程序的 UI 线程,因此可能导致响应速度不佳甚至 应用程序无响应错误。作为替代方案,使用 带有 CursorLoader 的 LoaderManager。

所以你应该修改你的方法为

if(android.os.Build.VERSION.SDK_INT >= 11) 
    //Call another constructor 
 else 
    //the constructor which you are calling

【讨论】:

if(android.os.Build.VERSION.SDK_INT >= 11) adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_multiple_choice, cur, cols, views,0); else 适配器 = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_multiple_choice, cur, cols, views); 我认为上面的代码会导致错误,因为 adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_multiple_choice, cur, cols, views,0);只能 API.sdk >=11 工作,现在我的应用程序是 android:minSdkVersion="8",但应用程序中的代码可以,为什么?谢谢!【参考方案2】:

通常,当某个功能被弃用时,它们会提供一种新的方式来做同样的事情。你应该转向这种新的做事方式。

【讨论】:

【参考方案3】:

你现在可以使用它,但它也可能在未来消失。

【讨论】:

【参考方案4】:

已弃用的功能将被其他以更好或更有效的方式实现相同目的的功能所取代。

你的问题的答案:

您能否告诉我,我的应用是否可以在未来的 Android 版本中始终正常运行?

几乎可以肯定不会 - 已弃用的功能会在一定时间后逐步淘汰。

我的建议是尽快使用替换功能。这将带来更多的好处,而不仅仅是面向未来。

【讨论】:

以上是关于我的功能已弃用的应用程序可以在未来的 Android 版本中正常运行吗?的主要内容,如果未能解决你的问题,请参考以下文章

已弃用的 OpenGL 功能

替换已弃用的CdkDropListContainer

此构建中使用了已弃用的 Gradle 功能,使其与 Gradle 5.0 不兼容

ConnectivityManager.TYPE_WIFI 在代码中显示已弃用。我在 M 以上版本中使用了网络功能,想要删除已弃用的警告

pymxs 替代已弃用的 MaxPlus 实用程序函数

Sequelize 已弃用的错误消息