我从谷歌看了这个例子,它是一个适配器AutoCompleteTextView,可以通过网络调用API来检索自动完成的建议.
它不使用AsynkTask或线程,但不提供StrictMode警告,并且在没有互联网连接时不会锁定UI,我想知道为什么.
是ArrayAdapter本身异步?
我想在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>
然后检查回调方法它是什么类型的对象,但这似乎并不太优雅.有没有更好的办法?
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 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但也失败了.
这是如何正确完成的?
我刚刚使用了Eclipse的'使用字段生成构造函数'功能,它为我提供了以下构造:
public Credentials(String userName, String password) {
super();
this.userName = userName;
this.password = password;
}
Run Code Online (Sandbox Code Playgroud)
的Credentials类,以便它延伸没有明确扩展另一个类Object,我猜.这个super();电话有什么好处?
说我有一个片段,在我的片段中我这样做:
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收集它们吗?
我有以下代码:
ArrayList<? extends IValues> valuesList
Run Code Online (Sandbox Code Playgroud)
IValues是一个interface.该列表填充implement了IValues接口的类/对象.我理解这个列表中每个对象的概念必须履行它们实现的接口所规定的合同.为什么java语言不这样做:
ArrayList<? implements IValues> valuesList
Run Code Online (Sandbox Code Playgroud)
?这对用户来说会更清楚,不是吗?
我想在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作为坦白说,我不明白的说法,我本来期望它采取表列(即房产).
我有什么想法可以做到这一点?
考虑这个用例:
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) 我有以下课程:
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()只能调用一次,不能多次。
使用我当前的解决方案,如果 …
android ×6
java ×3
kotlin ×2
build.gradle ×1
constructor ×1
coroutine ×1
dbflow ×1
generics ×1
gradle ×1
interface ×1
sql ×1
sqlite ×1
synchronized ×1