从风味自动启动android代码,而无需覆盖Application.onCreate

时间:2019-10-28 09:34:50

标签: android

最近我开始开发新的android appication。我决定采用上帝模式或开发人员模式来记录日志,或被迫显示应用程序的某些功能。此模式仅适用于特定口味,或者可能是单独的android模块(库),因为我不想影响生产代码。我的问题是有可能在应用启动时从该模式激发代码(例如显示通知),而不会影响生产代码吗?例如,不要覆盖Application.onCreate来启动God模块,因为在发行版本中我无法访问代码。如果没有,我有计划使用反射检查specyfies类是否在类路径中,并且如果运行它,是个好主意吗?

1 个答案:

答案 0 :(得分:0)

我找到了一个发布的解决方案,以防止提出问题。我使用ContentProvider,因为此组件可以在Application.onCreate()之前启动

我找到了一个发布的解决方案,以防止提出问题。我使用ContentProvider,因为此组件可以在调用Application.onCreate()之前启动,示例代码:

 /**
 * Content providers are loaded before the application class is created. [DevTool] is
 * used to install tools on application start.
 */
internal sealed class AppInstaller : ContentProvider() {

  override fun onCreate(): Boolean {
    val application = context!!.applicationContext as Application
    DevTools.install(application)
    return true
  }

  override fun query(
    uri: Uri,
    strings: Array<String>?,
    s: String?,
    strings1: Array<String>?,
    s1: String?
  ): Cursor? {
    return null
  }

  override fun getType(uri: Uri): String? {
    return null
  }

  override fun insert(
    uri: Uri,
    contentValues: ContentValues?
  ): Uri? {
    return null
  }

  override fun delete(
    uri: Uri,
    s: String?,
    strings: Array<String>?
  ): Int {
    return 0
  }

  override fun update(
    uri: Uri,
    contentValues: ContentValues?,
    s: String?,
    strings: Array<String>?
  ): Int {
    return 0
  }
}

现在我添加到了gradle

debugImplemetation devtool

并且我只有调试工具才具有调试工具,现在它们会影响生产代码!

相关问题