如何确定为应用程序注册的所有地理围栏?
在注册GeoFences后LocationClient.addGeofences()
,我等待onAddGeofencesResuls()
(返回SUCCESS)并尝试使用LocationClient.getTriggeringGeofences(intent)
我用于注册的相同意图,但我只有null
.
我正在尝试将gradle-retrolambda集成到我的Android项目中(遵循本指南),但是当我运行gradle构建时出现以下错误
:app:compileDebugJava
Fatal Error: Unable to find package java.lang in classpath or bootclasspath
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
org.gradle.api.tasks.TaskExecutionException:任务':app:compileDebugJava'的执行失败.在org.gradle上的org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)位于org.gradle.api.internal的org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)上的.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)位于org.gradle.api.internal.tasks.execution的org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:42).tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58) .skipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)....引起:org.gradle.api.internal.tasks .compile.CompilationFail edException:编译失败; 请参阅编译器错误输出以获取详细信 在Org.gradle.api.internal.tasks.compile.jdk6.Jdk6JavaCompiler.execute(Jdk6JavaCompiler.java:47)org.gradle.api.internal.tasks.compile.jdk6.Jdk6JavaCompiler.execute(Jdk6JavaCompiler.java:38)在org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.delegateAndHandleErrors(NormalizingJav ...
我认为这很奇怪,它使用jdk6.Jdk6JavaCompiler
虽然我配置了Java7兼容性,请参阅下面的gradle构建文件.
Gradle版本信息:
------------------------------------------------------------
Gradle 1.12
------------------------------------------------------------
Build time: 2014-04-29 09:24:31 UTC
Build number: none
Revision: a831fa866d46cbee94e61a09af15f9dd95987421
Groovy: 1.8.6
Ant: Apache Ant(TM) version 1.9.3 compiled on December 23 2013
Ivy: 2.2.0
JVM: 1.8.0_11 (Oracle Corporation 25.11-b03)
OS: Linux 3.13.0-32-generic amd64
Run Code Online (Sandbox Code Playgroud)
Java环境路径:
JAVA_HOME=/usr/lib/jvm/java-8-oracle
JAVA8_HOME=/usr/lib/jvm/java-8-oracle
JAVA7_HOME=/usr/lib/jvm/java-7-oracle
Run Code Online (Sandbox Code Playgroud)
Gradle构建文件:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.12.+' …
Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的AspectJ方面(使用@AspectJ),它只打印出一条日志消息.我的目标是在我的Android应用程序中建议代码.现在,只要我在应用程序源代码中拥有aspect类本身,这个方面就可以完美地运行.一旦我将方面移动到另一个模块(java - > .jar或android lib - > .aar),我在应用程序中运行建议代码时会遇到以下运行时异常:
java.lang.NoSuchMethodError: com.xxx.xxx.TraceAspect.aspectOf
Run Code Online (Sandbox Code Playgroud)
基本上我的结构是这样的:
Root
+ app (com.android.application)
- MainActivity (with annotation to be adviced)
+ library (android-library)
- TraceAspect (aspect definition)
Run Code Online (Sandbox Code Playgroud)
从ajc编译器,我可以看到ajc编译器选择了我的类并正确地建议它们,所以我真的不知道为什么它可以工作,只要我在源代码中有@AspectJ类,但是一旦我移动就停止工作它是一个jar存档.
我正在使用gradle.我的应用程序的Buildscript非常简单.我按照http://fernandocejas.com/2014/08/03/aspect-oriented-programming-in-android/中的说明进行操作
import com.android.build.gradle.LibraryPlugin
import org.aspectj.bridge.IMessage
import org.aspectj.bridge.MessageHandler
import org.aspectj.tools.ajc.Main
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.12.+'
classpath 'org.aspectj:aspectjtools:1.8.1'
}
}
apply plugin: 'com.android.application'
repositories {
mavenCentral()
}
dependencies {
compile 'org.aspectj:aspectjrt:1.8.1'
compile project (':library')
}
android.applicationVariants.all { variant ->
AppPlugin plugin …
Run Code Online (Sandbox Code Playgroud) 我刚刚完成了Android上的地理围栏教程(http://developer.android.com/training/location/geofencing.html),我想知道为什么地理围栏的'回调'是通过挂起的意图而不是简单的回调接口完成的.
如果在活动中实现,通常会断开位置客户端的连接onPause()
,因此在应用程序暂停/被销毁后,以前添加的地理围栏也不会被跟踪,那么为什么会有未决的意图呢?或者我错了?
我想在我的模型中使用(可搜索)本地化,我想出了以下模型:
@Entity
public class Category {
...
@ElementCollection
//key = language code (e.g. 'en') and value = localized label
private Map<String, String> name;
...
}
Run Code Online (Sandbox Code Playgroud)
我想做的不是在特定的本地化中查询包含casesensitive针的类别(例如,英文名称为'%abc%')
我试过类似的东西
from Category where name.key = :locale and lower(name.value) like :text
Run Code Online (Sandbox Code Playgroud)
但失败了,无法解除引用标量集合元素异常.
现在hibernate文档说,我必须使用elements()和indices()来表示值和键.对于密钥,这将很容易使用:locale in indices(name)
,但我怎么能以casesensitive方式匹配此区域设置的一部分值?
为了防止hql与我的模型不可行,我还能如何模拟可搜索的本地化?
我正在使用robolectric gradle插件为Android编写单元测试.除了能够使用Android Studio正确调试我的测试之外,到目前为止一切正常.
我做了一些调查(http://forums.gradle.org/gradle/topics/how_do_you_attach_a_debugger_to_gradle_so_that_i_can_debug_it_running_a_task),我最终得到的结果是:
从控制台启动可调试的gradle配置
gradlew -DtestDebug.debug=true app:clean app:testDebug
这将停止gradle构建并在5005等待监听器
在Android Studio中创建"远程"启动配置,该配置将附加在端口5005上
在Debug-mode中从Android Studio启动该配置
每次都要完成步骤1 + 3,我想调试我的测试.这很烦人.我想有办法,我可以直接从intelliJ启动gradle构建,它会自动附加调试器.我怎样才能做到这一点?
信息:(当然,理想的解决方案是我可以通过IntelliJ的JUnit配置直接启动单元测试,因为这样可以给我IDE支持,整齐地显示失败和通过测试等等.但是我遇到了问题. JUnit构建时没有找到Manifest文件等,所以我暂时放弃了它.)
**Gradle构建文件**
apply plugin: 'com.android.application'
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.robolectric:robolectric-gradle-plugin:0.12.+'
}
}
apply plugin: 'robolectric'
android {
compileSdkVersion 20
buildToolsVersion "20.0.0"
packagingOptions {
exclude 'LICENSE.txt'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE'
}
defaultConfig {
applicationId "test.fs.test"
minSdkVersion 14
targetSdkVersion 20
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false …
Run Code Online (Sandbox Code Playgroud) debugging android intellij-idea gradle android-gradle-plugin
在记录我自己的错误后,我想故意崩溃我的应用程序.Handler在Application.onCreate()中注册:
// set global exception handler
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, final Throwable ex) {
// unregister
Thread.setDefaultUncaughtExceptionHandler(null);
// do report ...
// crash app -does not work, app is frozen
if (ex instanceof RuntimeException)
throw (RuntimeException) ex;
throw new RuntimeException("Re-throw", ex);
}
Run Code Online (Sandbox Code Playgroud)
但是,我的应用程序冻结而不是崩溃对话框.如果我没有注册处理程序,我怎么能崩溃应用程序呢?
在ECMAScript中我使用的是CancelablePromise(https://github.com/alkemics/CancelablePromise),它基本上只是一个带有.cancel()
函数的Promise .无论何时.cancel()
调用,都会提供回调.then()
并且.catch()
不执行回调.
我想知道如果我等待取消的承诺会发生什么:
CancelablePromise promise = new CancelablePromise((resolve, reject) => resolve(1));
const promise2 = promise.then(x => x + 1);
promise.cancel();
console.log(await promise2);
Run Code Online (Sandbox Code Playgroud)
因此,此代码按预期工作,控制台上没有任何内容.但是,我想知道这是否会创建任何无法由GC收集的悬挂线程/引用,或者这是非常安全且有效的?
我正在按照此指南实施自定义键盘:http : //developer.android.com/guide/topics/text/creating-input-method.html
有没有一种方法可以从我的KeyboardService内部“连接”到哪个应用程序(=程序包ID)(哪个应用程序接收我发送的输入事件)?
keyboard android android-service android-input-method android-service-binding
android ×7
gradle ×3
java ×3
geofencing ×2
aspectj ×1
async-await ×1
crash ×1
debugging ×1
ecmascript-6 ×1
hibernate ×1
hql ×1
java-8 ×1
javascript ×1
keyboard ×1
localization ×1