小编Meh*_*esh的帖子

Android构建gradle太慢(依赖性解析)

我已经使用Android Studio(我目前的1.5版)2年了.一切都很好,但是当我下载Canary(2.1 p5)时,一切都出错了.每次我想创建一个新项目或打开一个项目或同步或导入一个新的lib或依赖项时,gradle都需要很长时间才能构建 - 将近20分钟.

我没有做任何事情,我刚刚下载了Canary版本并运行它.

症状:

  1. 它发生在我连接到互联网时
  2. 第一个延迟是Gradle:Resolve dependencies':app:_debugCompile'
  3. ...
  4. 建成25分钟后差不多完成了

注意: 当我断开互联网连接时,gradle将尽快完成


我试图通过以下方式解决这个问题:

  1. 我将gradle更改为脱机工作(它工作但我不想这样,因为我想导入libs或依赖项)
  2. 我已经创建了一个新文件(文件名是gradle.properties),C:\Users\username\.gradle然后将这些行写入其中

    org.gradle.parallel=true
    org.gradle.daemon=true
    
    Run Code Online (Sandbox Code Playgroud)
  3. 我删除了那个版本,然后安装了我的旧版本工作正常但问题仍然存在:(

  4. 禁用/启用防火墙

  5. 禁用/启用AntiVirus(Nod32)

  6. 重新安装Windows操作系统(8.1)

  7. 我已经下载了所有版本(1.0.0,...,1.5.1,2.0.0,2.1)

  8. 我用过代理


系统信息:

  • CPU:Intel Core i5
  • 拉姆:6.00 GB
  • 操作系统:Windows 8.1 64位

的build.gradle(项目:应用程序名称)

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'

        // NOTE: Do not place your application dependencies here; they belong
        // …
Run Code Online (Sandbox Code Playgroud)

android gradle android-studio build.gradle android-gradle-plugin

57
推荐指数
2
解决办法
5万
查看次数

如何为工人类实现Dagger?

由于Worker该类是由framework(WorkerManager)创建的,我们如何使用@Inject字段Worker

android dagger-2 android-jetpack android-workmanager

18
推荐指数
2
解决办法
2196
查看次数

使用 Work Manager 时 BackoffPolicy.EXPONENTIAL 和 BackoffPolicy.LINEAR 之间有什么区别?

没有任何官方文档(至少我已经阅读了文档)来解释这两种模式背后的用法和机制。它们是如何工作的?他们解决了什么问题?

如果有人可以为我简化它,我将不胜感激,因为我已经测试了两者并且没有看到任何有趣的事情。如果你问我,我会说不OneTimeWorkRequest.setBackoffCriteria()影响工作。

这是我的代码,

@Override
public void doSomethingUseful(String order) {

    Constraints constraint = new Constraints.Builder()
            .setRequiredNetworkType(NetworkType.CONNECTED)
            .build();

    Data data = new Data.Builder()
            .putString("order", order)
            .build();

    OneTimeWorkRequest oneTimeWorkRequest = new OneTimeWorkRequest.Builder(OrderSenderWorker.class)
            .setConstraints(constraint)
            .setInputData(data)
            .setBackoffCriteria(BackoffPolicy.EXPONENTIAL, 15, TimeUnit.SECONDS)
            .build();

    WorkManager.getInstance().beginUniqueWork("refresh-order", ExistingWorkPolicy.REPLACE, oneTimeWorkRequest).enqueue();

}
Run Code Online (Sandbox Code Playgroud)

Worker课堂上,每当我出错时,我都会WorkerResult.RETRYdoWork()方法中返回。

提前致谢 。

android android-workmanager

9
推荐指数
1
解决办法
4029
查看次数

将MaterialToolbar的标题更改为center

我正在使用导航组件和材质工具栏。我刚刚使用材质工具栏设置了导航组件。通过这样做,每当片段更改显示的后退按钮时,导航组件就会自动更改材质工具栏的标题。

问题是我只想将标题重力更改为中心而不删除那些导航组件工具栏支持。

我怎样才能做到这一点 ?

注意:我尝试过更改工具栏样式,但似乎不起作用。在工具栏视图中创建额外的文本视图这不是一个解决方案,因为我想使用导航组件工具栏支持。

提前致谢。

android android-architecture-navigation

5
推荐指数
2
解决办法
2224
查看次数