小编asc*_*sco的帖子

Android适配器是异步的吗?

我从谷歌看了这个例子,它是一个适配器AutoCompleteTextView,可以通过网络调用API来检索自动完成的建议.

它不使用AsynkTask或线程,但不提供StrictMode警告,并且在没有互联网连接时不会锁定UI,我想知道为什么.

ArrayAdapter本身异步?

android autocompletetextview android-adapter

2
推荐指数
1
解决办法
1547
查看次数

在一个Activity中使用不同的(AsyncTask)加载器

我想在Activity中使用不同的AsyncTaskLoader(返回类型不同),实现回调方法的最佳方法是什么?

这不起作用:

公共类MyActivity扩展Activity实现LoaderManager.LoaderCallbacks <MyPojo>,LoaderManager.LoaderCallbacks <MyOtherPojo>

Eclipse说

The interface LoaderCallbacks cannot be implemented more than once with different arguments
Run Code Online (Sandbox Code Playgroud)

那我该怎么办?我的想法是制作活动

实现LoaderManager.LoaderCallbacks <Object>

然后检查回调方法它是什么类型的对象,但这似乎并不太优雅.有没有更好的办法?

android asynctaskloader android-loader

2
推荐指数
1
解决办法
1415
查看次数

PreferenceManager.getDefaultSharedPreferences()vs getPreferences()

PreferenceManager.getDefaultSharedPreferences(context)
Run Code Online (Sandbox Code Playgroud)

getPreferences()
Run Code Online (Sandbox Code Playgroud)

似乎检索不同的首选项.

PreferenceManager.getDefaultSharedPreferences(context).getBoolean(
                        "userWasAskedToEnableGps", false);
Run Code Online (Sandbox Code Playgroud)

对我来说,返回false,

getPreferences(MODE_PRIVATE).getBoolean("userWasAskedToEnableGps", false);
Run Code Online (Sandbox Code Playgroud)

返回true.

Preference是用编辑器编写的

Editor e = getPreferences(MODE_PRIVATE).edit(); 
e.putBoolean (...);
e.commit();
Run Code Online (Sandbox Code Playgroud)

如何在Context中的Activity之外获得相同的Preferences?

android android-preferences sharedpreferences

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

将maven依赖项添加到Android Studio gradle

只是尝试Android Studio和Gradle,我想将Roboguice添加到我的项目中,这是我的build.gradle:

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

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.8.+'

    }
}



allprojects {
    repositories {
        mavenCentral()
    }
}

dependencies {
    compile 'org.roboguice:roboguice:2.0'
}
Run Code Online (Sandbox Code Playgroud)

给我

Gradle 'TestApp' project refresh failed:
         Build script error, unsupported Gradle DSL method found: 'compile()'!
Run Code Online (Sandbox Code Playgroud)

我试图移动线

compile 'org.roboguice:roboguice:2.0'
Run Code Online (Sandbox Code Playgroud)

在内dependencies,buildscript但也失败了.

这是如何正确完成的?

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

2
推荐指数
1
解决办法
6468
查看次数

在构造函数中调用super()

我刚刚使用了Eclipse的'使用字段生成构造函数'功能,它为我提供了以下构造:

public Credentials(String userName, String password) {
    super();
    this.userName = userName;
    this.password = password;
}
Run Code Online (Sandbox Code Playgroud)

Credentials类,以便它延伸没有明确扩展另一个类Object,我猜.这个super();电话有什么好处?

java constructor

2
推荐指数
1
解决办法
96
查看次数

这会造成内存泄漏吗?

说我有一个片段,在我的片段中我这样做:

resultAdapter = new ResultAdapter(this, search);
listView.setAdapter(resultAdapter);
Run Code Online (Sandbox Code Playgroud)

我的适配器的构造函数是:

public ResultAdapter(Fragment fragment) {
    this.fragment = fragment; 
}
Run Code Online (Sandbox Code Playgroud)

然后,My Fragment保存对适配器的引用,适配器保存对该片段的引用.这会阻止GC收集它们吗?

java android garbage-collection

2
推荐指数
1
解决办法
96
查看次数

为什么<?扩展接口>而不是<?实现接口>

我有以下代码:

ArrayList<? extends IValues> valuesList
Run Code Online (Sandbox Code Playgroud)

IValues是一个interface.该列表填充implementIValues接口的类/对象.我理解这个列表中每个对象的概念必须履行它们实现的接口所规定的合同.为什么java语言不这样做:

ArrayList<? implements IValues> valuesList
Run Code Online (Sandbox Code Playgroud)

?这对用户来说会更清楚,不是吗?

java generics interface

2
推荐指数
1
解决办法
148
查看次数

DBFlow'算作'

我想在DBFlow中执行以下语句:

SELECT SECTION_ID, COUNT(SECTION_ID) AS SECTION_COUNT FROM ARTICLES GROUP BY SECTION_ID ORDER BY SECTION_COUNT DESC
Run Code Online (Sandbox Code Playgroud)

我尝试的是:

Select(Article_Table.sectionId).from(Article.java).count(???) ...
Run Code Online (Sandbox Code Playgroud)

流对象有一个count()方法,但它需要一个DatabaseWrapper作为坦白说,我不明白的说法,我本来期望它采取表列(即房产).

我有什么想法可以做到这一点?

sql sqlite android android-sqlite dbflow

2
推荐指数
1
解决办法
651
查看次数

如何在Interactor/UseCase中获取CoroutineScope

考虑这个用例:

class GetPhotosUseCase(
    private val photosRepository: IPhotosRepository,
    private val favoritesRepository: IFavoritesRepository
) : IGetPhotosUseCase {

    override suspend fun getPhotos(): List<Photo> {
        val photos = photosRepository.getPhotos()
        val favoriteIds = favoritesRepository.getFavoriteIds()
        return photos.map {
            it.copy(isFavorite = favoriteIds.contains(it.id))
        }
    }

}

interface IPhotosRepository {

    suspend fun getPhotos(): List<Photo>

}

interface IFavoritesRepository {

    suspend fun getFavoriteIds(): List<Int>

}
Run Code Online (Sandbox Code Playgroud)

我从两个不同的来源获取数据并将它们组合起来。现在,这是连续运行的。当我想并行运行photosRepository.getPhotos()favoritesRepository.getFavoriteIds()节省执行时间时,我的天真的做法是:

override suspend fun getPhotos(): List<Photo> {
    val photosDeferred = GlobalScope.async { photosRepository.getPhotos() }
    val favoriteIdsDeferred = GlobalScope.async { favoritesRepository.getFavoriteIds() }
    return …
Run Code Online (Sandbox Code Playgroud)

android coroutine kotlin kotlin-coroutines

2
推荐指数
1
解决办法
1650
查看次数

同步和 withContext

我有以下课程:

class SdkWrapper(private val sdk: Sdk) {

    private var inited = false

    suspend fun doSomething() = withContext(Dispatchers.IO) {
        if (inited.not()) init()
        useSdk()
    }
        
    private fun init() {
        // takes a long time
        sdk.init()
        inited = true
    }

    // has to be done asynchronously
    // sdk.init() has to have been called before using this
    private fun useSdk() {

    }

}

class Sdk {
    // must only be done once
    fun init() {}
}
Run Code Online (Sandbox Code Playgroud)

在我能做之前useSdk(),我必须调用sdk.init(),但sdk.init()只能调用一次,不能多次。

使用我当前的解决方案,如果 …

synchronized kotlin kotlin-coroutines

2
推荐指数
1
解决办法
2908
查看次数