我的Eclipse存在一个主要问题.好吧,我有100个Eclipse问题(因为它是一个垃圾IDE),但让我澄清一下.我在做Android开发.每次打开,关闭或保存XML文件时,Eclipse都会冻结5分钟(并占用系统的大部分CPU).这适用于我的android项目中的每个XML文件.这种情况一整天都在发生.毋庸置疑,我已经失去了无数小时的开发时间,因为Eclipse Foundation无法构建一个可靠的IDE.事实上,我认为Google应该将垃圾摇滚基金转移到垃圾箱中并为Android创建自己专用的IDE .....但我离题了.
我已经在Windows上禁用了工作区目录的索引.我已经阅读了StackOverflow上关于如何优化Eclipse.ini文件的无数帖子.我已经尝试过了.我多次重新安装Eclipse.我有一台Win7 64bit机器在i7处理器上运行,内存为8GB!除了切换到基于Linux的发行版或购买新的笔记本电脑之外,我不知道还能做什么.有人可以给我一个专业的建议吗?
谢谢你,伊戈尔
更新 我的愿望实现了Android Studio,我现在使用它作为我唯一的IDE.
我有一个带有SavedStateHandle
参数的 ViewModel。我在那里保存一个字符串,如下所示:
private fun saveString(str: String) {
state.set(KEY_STRING, str)
}
Run Code Online (Sandbox Code Playgroud)
然后我强制关闭我的应用程序并重新启动它,并希望检索保存的字符串,如下所示:
fun getSavedString(): String? {
return state.get<String>(KEY_String)
}
Run Code Online (Sandbox Code Playgroud)
但是,它总是返回 null。关于如何正确使用 SavedStateHandle 有什么想法吗?
我已将 Project Lombok 包含在我的 Gradle 依赖项中,如下所示:
provided 'org.projectlombok:lombok:1.16.0'
Run Code Online (Sandbox Code Playgroud)
我已经注释了我所有的 getter 和 setter
@Getter @Setter
Run Code Online (Sandbox Code Playgroud)
但现在我根本无法构建我的项目。我收到这样的错误:
错误:C:\Users\Igor\Workspace\Geofencing\libraries\my-sdk\src\main\java\com\sdk\MyMonitor.java:93:方法 getLatitude() 未针对类型 Geofence 定义
但我知道getLatitude是由 Lombok 在我的 Geofence.java 类中定义的!
正如Git中心上的Fresco项目所说:"在Android 4.x及更低版本中,Fresco将图像放在Android内存的特殊区域.这可以让您的应用程序运行得更快 - 并且更容易遭受可怕的OutOfMemoryError."
从这个答案,我知道它使用ashmem来放置位图.
而我的问题是:为什么壁画剂量不能在Android 5.0或更高版本的ashmem中放置位图?Android是否会更改某些系统功能并将其禁用?
我收到以下错误:
JNI在应用程序中检测到错误:JNI GetMethodID被调用挂起异常java.lang.ClassNotFoundException:在路径上找不到类"package.name.class":DexPathList [[zip file"/system/framework/sample.jar"], nativeLibraryDirectories = [/ vendor/lib,/ system/lib]]
JNI DETECTED ERROR IN APPLICATION: JNI GetMethodID called with pending exception java.lang.ClassNotFoundException: Didn't find class "package.name.class" on path: DexPathList[[zip file "/system/framework/XposedBridge.jar"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
26771-26918/package.name.class A/art: art/runtime/java_vm_ext.cc:410] at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)
26771-26918/package.name.class A/art: art/runtime/java_vm_ext.cc:410] at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:511)
26771-26918/package.name.class A/art: art/runtime/java_vm_ext.cc:410] at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:469)
Run Code Online (Sandbox Code Playgroud)
以下是有关错误的更多信息:
`jmethodID MethodId;
JNIEnv * env;
int nStatus = gVM->GetEnv((void**)&env, JNI_VERSION_1_6);
int nResult = attachStatus(nStatus, &env);
LOG_HM("::attach status = %d::\n", nResult);
if (nResult == ATTACH_FAILED) { …
Run Code Online (Sandbox Code Playgroud) 嗨,我在一个项目中使用 Kotlin 协程库。
下面的方法调用一个挂起函数,它返回一个布尔值。
fun isNetworkAvailable(context: Context?): Boolean {
//return checkNetworkReachability(context)
var isNetworkAvailable = false
GlobalScope.launch(Dispatchers.Default) {
isNetworkAvailable = GlobalScope.async<Boolean> {
checkNetwork()
}.await()
}
return isNetworkAvailable
}
Run Code Online (Sandbox Code Playgroud)
这里的 checkNetwork 是挂起函数。在执行之前,返回值被传递给调用者(视图/活动)。如果不将“isNetworkAvailable”设为挂起,我该如何实现?。
在 checkNetwork 方法中,检查可达性调用网络调用,如下所示。
private suspend fun checkNetwork() : Boolean {
val value = GlobalScope.async<Boolean> {
val isEastReachable = async { checkEastReachable() }
if (!isEastReachable.await()) {
checkWestReachable()
} else {
true
}
}
return value.await()
}
Run Code Online (Sandbox Code Playgroud)
子方法是
private suspend fun checkEastReachable(): Boolean = coroutineScope {
withContext(Dispatchers.Default) {
repository.networkManager.callReachableEast()
}
}
private …
Run Code Online (Sandbox Code Playgroud) viewModelScope用于将协程生命周期绑定到ViewModel
生命周期。liveData构建器创建一个LiveData
运行协程的 ,其生命周期与状态绑定LiveData
,因此,当LiveData
不活动时,协程会在超时后取消。由于超时,协程不会在配置更改时被取消。
如果我在 a 内创建一个LiveData
via构建器,并观察到,生命周期已经绑定到生命周期。我还应该将其传递给构建者吗?我认为我不应该,但在 Android 文档示例之一中它通过了:liveData
ViewModel
LiveData
Activity
LiveData
Activity
viewModelScope.coroutineContext
liveData
class MyViewModel: ViewModel() {
private val userId: LiveData<String> = MutableLiveData()
val user = userId.switchMap { id ->
liveData(context = viewModelScope.coroutineContext + Dispatchers.IO) {
emit(database.loadUserById(id))
}
}
}
Run Code Online (Sandbox Code Playgroud) android android-livedata android-viewmodel android-architecture-components kotlin-coroutines
我正在进入一个使用 SharedPreferences 进行数据持久化的遗留代码库。我想测试保存/检索值,使用MockK 模拟。但是,此单元测试中的断言从未通过。就好像 SharedPrefs 在测试中没有正确存储:
class MyProfilePrefsTest {
private lateinit var myProfilePrefs: ProfilePrefs
@RelaxedMockK private lateinit var mockSharedPrefs: SharedPreferences
@RelaxedMockK private lateinit var context: Context
@Before
fun setup() {
MockKAnnotations.init(this)
val sharedPreferences = mockk<SharedPreferences>()
every { sharedPreferences.edit() } returns (mockk())
myProfilePrefs = ProfilePrefs(context, sharedPreferences)
mockStatic(DeviceInfo::class)
every { DeviceInfo.serialNumber() } returns "fake_serial"
}
@Test
fun `Saving correct cellular download pref for device id`() {
// Arrange
val isEnabled = true
// Act
myProfilePrefs.setCellularDownloadingEnabled(isEnabled)
// Assert
assertTrue(myProfilePrefs.getCellularDownloadingEnabled())
}}
Run Code Online (Sandbox Code Playgroud)
有人知道如何对 …
我在Android源代码中看到了一个不熟悉的符号: *=
例如: density *= invertedRatio;
我不熟悉星等号表示法.有人可以解释一下吗?
我像这样构建了我的Retrofit实例:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(server.url("/"))
.addConverterFactory(MoshiConverterFactory.create(moshi))
.build();
Run Code Online (Sandbox Code Playgroud)
然后我这样调用我的MockWebServer实例:
server.enqueue(new MockResponse().setBody(jsonStr));
Run Code Online (Sandbox Code Playgroud)
凡jsonStr建这样的:
MyModel model = new MyModel("HOME", "AWAY", "ENTERTAIN", "NIGHT", "MUTE",
"VOLUME", "SCENE 1", "SCENE 2", "SCENE 3");
JsonAdapter<MyModel> jsonAdapter = moshi.adapter(MyModel.class).toJson(model);
Run Code Online (Sandbox Code Playgroud)
但是,代码崩溃了:
Response response = api.getString().execute();
Run Code Online (Sandbox Code Playgroud)
例外是:
com.squareup.moshi.JsonDataException:期望一个字符串但在路径$处是BEGIN_OBJECT
我做错了什么?
android ×7
java ×2
android-architecture-components ×1
async-await ×1
bitmap ×1
eclipse ×1
fresco ×1
gradle ×1
kotlin ×1
lombok ×1
mockk ×1
moshi ×1
notation ×1
retrofit2 ×1
unit-testing ×1