所以我一直在Android Studio中开发一个简单的应用程序,自从过去几天,每当我点击"运行"时,构建都需要5分钟以上.它过去并不常见.我不知道为什么.它说"Gradle Build Running"然后在5分钟后加载app.这发生在模拟器和我的Android设备上.我的成绩版本是2.10我查找了这个问题,我已经尝试了其他类似帖子建议的所有内容,包括:
org.gradle.daemon=truegradle.properites文件以下是截屏.
即使在完成所有这些之后,我的成绩也需要5分钟以上.这就是事件日志中的内容:
10:27:57 AM Executing tasks: [:app:clean, :app:generateDebugSources, :app:mockableAndroidJar, :app:prepareDebugUnitTestDependencies, :app:generateDebugAndroidTestSources, :app:assembleDebug]
10:34:24 AM Gradle build finished in 6m 26s 378ms
Run Code Online (Sandbox Code Playgroud)
任何建议都会有所帮助.提前致谢 :)
android build.gradle android-gradle-plugin android-studio-2.1
我需要从毫秒开始格式化秒和分钟.我正在使用countdownTimer.有没有人有吸烟?我看着乔达时间.但我需要的是一种格式,所以我有1:05而不是1:5.谢谢
private void walk() {
new CountDownTimer(15000, 1000) {
@Override
public void onFinish() {
lapCounter++;
lapNumber.setText("Lap Number: " + lapCounter);
run();
}
@Override
public void onTick(long millisUntilFinished) {
text.setText("Time left:" + millisUntilFinished/1000);
}
}.start();
}
Run Code Online (Sandbox Code Playgroud) 在尝试构建时,我得到了这个堆栈跟踪:
Exception in thread "main" java.lang.NullPointerException: Couldn't find outer class com/xxx/CheckListPresenter$onAttached$1$5 of com/xxx/CheckListPresenter$onAttached$1$5$1
at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:1079)
at com.google.devtools.build.android.desugar.ClassVsInterface.isOuterInterface(ClassVsInterface.java:56)
at com.google.devtools.build.android.desugar.InterfaceDesugaring.visitOuterClass(InterfaceDesugaring.java:246)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:638)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:500)
at com.google.devtools.build.android.desugar.Desugar.desugarClassesInInput(Desugar.java:477)
at com.google.devtools.build.android.desugar.Desugar.desugarOneInput(Desugar.java:361)
at com.google.devtools.build.android.desugar.Desugar.desugar(Desugar.java:314)
at com.google.devtools.build.android.desugar.Desugar.main(Desugar.java:711)
Run Code Online (Sandbox Code Playgroud)
我检查了CheckListPresenter课程,似乎没有任何问题.我尝试删除该类只是为了看它是否会构建,但错误只是转移到另一个类,说明相同的问题.
几个月前我最后一次触摸这段代码是好的,所以我不确定是什么触发了这一变化.
可能重要的事情:这是一个Android项目.这是用Kotlin写的.这在transformClassesWithDesugarForDebuggradle任务上失败
这些都只是在我尝试的黑暗中刺伤:
创建一个新项目并仅移入我的源代码和gradle文件.
从java 8到7.
不同版本的JDK.我试过1.8.0_151和1.8.0_152.
添加javaMaxHeapSize "4g"到build.gradle.
升级所有内容:gradle包装器和每个依赖项.
删除了Dagger,转而支持Koin
删除了Kapt
同时使用Android Studio的预览版和稳定版
这是我的构建扫描,它会做什么好事
这是破坏我的代码片段:
view?.let { v ->
v.getCancelClicks()
.doOnSubscribe({ disposables.add(it) })
.subscribe({
v.showExitDialog()
.filter { it }
.subscribe({
cancel()
}, this::onError)
}, this::onError)
}
Run Code Online (Sandbox Code Playgroud)
令人感到奇怪的是,这些没有一个 …
我正在构建一个需要实时更新的Android应用程序.我的服务器是Firebase.Firebase用于在用户连接到服务器时接收其更新的数据.到目前为止,我对Firebase印象非常深刻,但是我关注的是当应用程序未处于活动状态时接收新数据.我真的不想尝试这些想法,发现它们是个坏主意,因为我的时间很短.我正在寻找建议和意见.
我错过了任何其他建议或可能的问题?谢谢你的时间!
我找到了这个帖子.仍然不确定.根据詹姆斯·坦普林(怀疑他是Firebase开发者),也许服务并不是一个坏主意
我是RxJava的新手,并将其与MVP架构结合使用.
我发现了一些关于使用保留片段在配置更改时保存observable的示例(仍然不确定这是否是最好的方法).我发现的例子是直接在Activity或Fragment上处理observable,而不是从Presenter处理.
所以我试验并设置了这个快速示例(仅使用Reactivex的RxJava和RxAndroid lib)来测试,这似乎工作正常.这个例子的作用是:
我想知道我是否正确地执行此操作,并且当在Presenter中处理observable的订阅时,是否有更高效或更优雅的方式来处理配置更改?
编辑:感谢您的反馈.基于此,我已经达到了我认为更清洁的解决方案,并且我已经更新了我的链接示例.
随着新的变化; 而不是将Observable从Presenter传递给Activity到retainFragment以存储一个configurationChange事件,我宁愿将retainFragment设置为Presenter创建时的第二个"视图".
这种方式当onResume()在设备旋转后发生时,我不需要让Activity执行将Observable从retainFragment传递回Presenter的丑陋管道.
Presenter可以直接与第二个"视图"进行交互,并检查保留的observable本身并在需要时重新订阅.主要活动不再需要知道这个可观察的.突然间,这是一个更简单的视图层.
我目前正在Android中构建一个应用程序,并使用Robotium进行功能测试(顺便说一下,不要在没有Android 1.6的情况下使用Robotium,这太麻烦了).
其中一些测试有随机的失败倾向,主要是Robotium缺少文本字段,或超时,而不是阅读文本.我正在尝试使用@FlakyTest注释,因此它们会在抛出失败的测试错误之前运行两到三次.但是,注释不起作用,测试在失败后不会重新运行.
以下是我使用注释的方法:
public class ClassName extends ActivityInstrumentationTestCase2<HomeActivity>{
@LargeTest
@FlakyTest(tolerance=3)
public void testMethod(){
//Here I run my roboitium scripts.
}
}
Run Code Online (Sandbox Code Playgroud)
然后我从命令行运行它:
adb shell am instrument -w com.jayway.test/android.test.InstrumentationTestRunner
eclipse和测试的命令行执行都没有考虑到片状测试注释.有没有人看到我试图申请的错误@FlakyTest?
我在Android App中集成了Google Plus.我使用的是Android SDK版本4.2.2.但是我在google plus上执行共享帖时遇到了这个错误:
Google Plus服务已过期
和
ConnectionResult {statusCode = SERVICE_VERSION_UPDATE_REQUIRED,resolution = null}
我想在模拟器上运行Google Plus发布,而不是在设备上运行.
任何帮助将不胜感激.
我正在尝试从特定视图访问按钮.相同的视图显示6次.这是我正在使用的代码.
public void testTimeConfig(){
onData(withDesc("description")).onChildView(withId(R.id.positive)).perform(click());
}
private static Matcher<Object> withDesc(String desc) {
return allOf(is(instanceOf(String.class)), is(desc));
}
Run Code Online (Sandbox Code Playgroud)
当我跑步时,我收到一个错误:
在视图上执行'加载适配器数据'时出错'可从类中分配:class android.widget.AdapterView'.
这是访问子视图的最佳方式吗?如果是这样,怎么样?
这是我现在尝试使用的代码.
Run Code Online (Sandbox Code Playgroud)onView(allOf((withContentDescription("description")), hasSibling(withContentDescription("SettingsLayout")), hasSibling(withId(R.id.positive)))).perform(click());
和
Run Code Online (Sandbox Code Playgroud)onView(allOf((withContentDescription("description")), hasSibling(withId(R.id.positive)))).perform(click());
出现此错误:
Run Code Online (Sandbox Code Playgroud)No views in hierarchy found matching
<view
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/setAGoalTitle"
android:layout_alignParentLeft="true"
class="com.xxx"
android:layout_marginTop="30dp"
android:id="@+id/timeGoalWidget"
app:goalLabel="@string/time_min_upper"
app:icon="@drawable/ic_icn_summary_time"
app:step="300"
app:valueFormat="time"
android:gravity="center_horizontal"
android:layout_marginBottom="60dp"
android:contentDescription="setAGoalTimeConfigurator"/>
<view
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignTop="@id/timeGoalWidget"
class="com.xxx"
android:id="@+id/distanceGoalWidget"
app:goalLabel="@string/distance_upper"
app:icon="@drawable/ic_icn_summary_track"
app:step="0.25"
app:valueFormat="decimal_two"
android:gravity="center_horizontal"
android:contentDescription="setAGoalDistanceConfigurator"/>
<view
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/timeGoalWidget"
android:layout_alignLeft="@id/timeGoalWidget"
class="com.xxx"
android:id="@+id/paceGoalWidget"
app:goalLabel="@string/pace_upper"
app:icon="@drawable/ic_icn_summary_pace"
app:valueFormat="time"
app:step="10"
android:gravity="center_horizontal"
android:layout_marginBottom="60dp"
android:contentDescription="setAGoalPaceConfigurator"/>
<view
android:layout_width="wrap_content" …Run Code Online (Sandbox Code Playgroud) 从我对其他一个问题的回答中,我发现了一个允许项目重新排序的ListView子类的Google Demo.
该演示工作得很好,但我很难理解它是如何工作的:当一个项目被拖动到ListView的边界上方/下方时,ListView开始向上/向下滚动以显示新项目.必要的计算使用底层ScrollView的不同参数:
public boolean handleMobileCellScroll(Rect r) {
int offset = computeVerticalScrollOffset();
int height = getHeight();
int extent = computeVerticalScrollExtent();
int range = computeVerticalScrollRange();
int hoverViewTop = r.top;
int hoverHeight = r.height();
if (hoverViewTop <= 0 && offset > 0) {
smoothScrollBy(-mSmoothScrollAmountAtEdge, 0);
return true;
}
if (hoverViewTop + hoverHeight >= height && (offset + extent) < range) {
smoothScrollBy(mSmoothScrollAmountAtEdge, 0);
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
height是ListView本身的高度offset是滚动位置=向上/向下滚动了多少单位/像素range是完整内容的高度. extent …考虑这个课程:
public class MyClassOfMystery {
public static final int NO_FLAGS = ~0;
public static final int FIRST_FLAG = 1;
public static final int SECOND_FLAG = 1 << 1;
public static final int THIRD_FLAG = 1 << 2;
public static final int FOURTH_FLAG = 1 << 3;
@Retention(RetentionPolicy.SOURCE)
@IntDef(flag = true, value = {NO_FLAGS, FIRST_FLAG, SECOND_FLAG, THIRD_FLAG, FOURTH_FLAG})
public @interface MysteryFlags { }
... set flags, get flags, and use flags stuff.
}
Run Code Online (Sandbox Code Playgroud)
我经常创建这样的东西,并发现能够遍历所有可用的标志是有用的MysteryFlags.
我可以遍历设置的值MysteryFlags吗?
这是我尝试过的:
这印刷 …