小编Igo*_*sky的帖子

Eclipse Android XML文件冻结

我的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.

eclipse

6
推荐指数
1
解决办法
1754
查看次数

Android SavedStateHandle 不保存在 ViewModel 中

我有一个带有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 有什么想法吗?

android android-viewmodel

6
推荐指数
1
解决办法
1960
查看次数

Project Lombok - 未定义 Geofence 类型的方法

我已将 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 类中定义的!

java gradle lombok android-studio

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

为什么fresco选择不在android 5.0或更高版本上将位图放在ashmem中

正如Git中心上的Fresco项目所说:"在Android 4.x及更低版本中,Fresco将图像放在Android内存的特殊区域.这可以让您的应用程序运行得更快 - 并且更容易遭受可怕的OutOfMemoryError."

这个答案,我知道它使用ashmem来放置位图.

而我的问题是:为什么壁画剂量不能在Android 5.0或更高版本的ashmem中放置位图?Android是否会更改某些系统功能并将其禁用?

android memory-management bitmap fresco

5
推荐指数
1
解决办法
604
查看次数

JNI在应用程序中检测到错误:使用挂起异常java.lang.ClassNotFoundException调用JNI GetMethodID:未找到类

我收到以下错误:

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)

android android-ndk-r5

5
推荐指数
1
解决办法
3357
查看次数

从使用 Kotlin 协程调用挂起函数的普通函数返回值

嗨,我在一个项目中使用 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)

android async-await kotlin kotlin-coroutines coroutinescope

4
推荐指数
1
解决办法
3634
查看次数

我应该将 viewModelScope.coroutineContext 传递给 liveData 构建器函数吗?

viewModelScope用于将协程生命周期绑定到ViewModel生命周期。liveData构建器创建一个LiveData运行协程的 ,其生命周期与状态绑定LiveData,因此,当LiveData不活动时,协程会在超时后取消。由于超时,协程不会在配置更改时被取消。

如果我在 a 内创建一个LiveDatavia构建器,并观察到,生命周期已经绑定到生命周期。我还应该将其传递给构建者吗?我认为我不应该,但在 Android 文档示例之一中它通过了:liveDataViewModelLiveDataActivityLiveDataActivityviewModelScope.coroutineContextliveData

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

4
推荐指数
1
解决办法
2495
查看次数

在 Android 中测试 SharedPreferences

我正在进入一个使用 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 unit-testing sharedpreferences mockk

4
推荐指数
2
解决办法
6411
查看次数

Java中*=的含义

我在Android源代码中看到了一个不熟悉的符号: *=

例如: density *= invertedRatio;

我不熟悉星等号表示法.有人可以解释一下吗?

java notation

3
推荐指数
3
解决办法
4万
查看次数

Moshi Retrofit错误:"预期字符串但是BEGIN_OBJECT"

我像这样构建了我的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 mockwebserver moshi retrofit2

3
推荐指数
3
解决办法
4891
查看次数