小编Eli*_*zer的帖子

Guice @Provides方法与提供者类

我正在研究一个有很多注射的相当大的项目.我们目前正在使用一个实现Provider每个需要一个注入的类的类,它们大多有一个行get方法.

每次我需要一个新的提供者时,创建一个新类就开始变得烦人.使用提供程序类而不是@ProvidesModule的反之亦然有什么好处?

java dependency-injection guice roboguice

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

Javascript从JSON有效地构建表并将其添加到DOM

我有一个JSON数组从服务器进来,有一个包含200个对象的数组,每个对象包含另外10个我希望以表格格式显示的对象.起初我正在<tr>为每次迭代创建一个并使用jQuery <td>从数组值中添加一个内置的<tr>.这在Chrome中大约需要30秒,在IE 8中大约需要19秒.这需要太长时间,所以我尝试切换到Array.join()方法,在那里我将存储构成整个表的每个字符串在一个数组中,最后做$('#myTable').append(textToAppend).这实际上比我的第一个版本差了大约5秒钟.

我想把这个大约10秒钟.我有机会吗?如果没有,我只会一次添加一行,但我宁愿不这样做.

for(allIndex = 0; allIndex < entries.alumnus.length; allIndex++){

  var entry = '<tr id="entry' + allIndex + '" class="entry"></tr>';
  $('#content_table').append(entry);

  $('#entry' + allIndex).append(($.trim(entries.alumnus[allIndex].title) != '' ?
        '<td id="title' + allIndex + '" class="cell"><span class="content">' +
         entries.alumnus[allIndex].title + '</span></td>' : '<td width="5%">' + 
         filler + '</td>'));    
  .
  .
  .
  .//REST OF ELEMENTS
  .
  .
  .
}   
Run Code Online (Sandbox Code Playgroud)

更新:昨天我一定搞砸了,因为我回去尝试从DOM中添加元素,然后在不使用jQuery的情况下附加它们,我在Chrome中将时间缩短到85毫秒,在IE7中缩短到450毫秒! !你们真棒!我给了user1一个答案,因为那个更全面,使用片段并没有真正改变我在Chrome中的时间,在IE7中增加了大约20ms.但我仍然感谢@Emre Erkan的回答,并将更频繁地利用:)

javascript string performance jquery concatenation

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

Java未选中覆盖返回类型

我有一个包含以下组件的项目:

public abstract class BaseThing {
    public abstract <T extends BaseThing> ThingDoer<T, String> getThingDoer();
}

public class SomeThing extends BaseThing {
    public ThingDoer<SomeThing, String> getThingDoer() {
        return Things.getSomeThingDoer();
    }
}

public class SomeOtherThing extends BaseThing {
    public ThingDoer<SomeOtherThing, String> getThingDoer() {
        return Things.getSomeOtherThingDoer();
    }
}

public class Things {
    public ThingDoer<SomeThing, String> getSomeThingDoer {
        return getThingDoer(SomeThing.class);
    }

    public ThingDoer<SomeOtherThing, String> getSomeOtherThingDoer {
        return getThingDoer(SomeOtherThing.class);
    }

    private <D extends ThingDoer<T, String> D getThingDoer(Class<T> clazz) {
        //get ThingDoer
    }
}

public class …
Run Code Online (Sandbox Code Playgroud)

java generics polymorphism abstract-class return-type

8
推荐指数
1
解决办法
5507
查看次数

测试未发布应用程序的Firebase动态链接

我的应用程序的开发版本未在Play商店中发布.我想用它来测试动态链接,但每当我点击一个动态链接时,它就会打开游戏商店,并且我得到一个未找到的错误(因为Play商店中没有相应的包).

推荐的测试方法是什么?它也适用于未发布的登台环境等.

android firebase-dynamic-links

8
推荐指数
1
解决办法
2004
查看次数

RecyclerView和DiffUtil - 并发梦魇

DiffUtil建议的文档建议DiffUtil.DiffResult在后台线程上生成因为潜在的长计算时间.这对我来说似乎是一个坏主意,因为该线程可能在以下情况下对过时数据进行操作(假设list访问是线程安全的):

  1. 添加数据list并通知适配器
  2. 需要更换listnewList这将对一些添加和移除一些的差异
  3. DiffUtil.calculateDiff在后台调用并获取DiffResultfor listnewList,并将消息发送到将使用newList和调用的主线程DiffResult.dispatchUpdatesTo
  4. 在处理该消息之前,用户对导致突变的主线程采取操作 list
  5. 消息被处理,newList被设置为新的数据源并且DiffResult.dispatchUpdatesTo被运行导致基础数据的不一致视图+自DiffResults计算以来丢失任何突变

嗯,这不好,所以让我们从第3步开始改变:

  1. 设置newList为新的数据源,DiffUtil.calculateDiff在后台调用并获取DiffResultfor listnewList,并将消息发送到将调用的主线程DiffResult.dispatchUpdatesTo
  2. 在处理该消息之前,用户对导致突变的主线程采取操作newList,并通知适配器,导致数据视图不一致,因为DiffResult.dispatchUpdatesTo尚未调用

对此有更多的变化,但没有一个是好的.似乎可靠地使用DiffUtil大型数据集和变更集的唯一方法DiffResult.dispatchUpdatesTo是在调用之前禁用或排队所有更新.

我错过了会导致上述错误的内容吗?

concurrency diff android android-support-library android-recyclerview

8
推荐指数
1
解决办法
2811
查看次数

Kotlin如果不是空的话

使用withiff a 最简洁的方法var是什么null

我能想到的最好的是:

arg?.let { with(it) {

}}
Run Code Online (Sandbox Code Playgroud)

null kotlin kotlin-null-safety

8
推荐指数
1
解决办法
3151
查看次数

当屏幕被唤醒并且锁定屏幕未禁用时,Android活动不显示

我有一个BroadcastReceiver开始Activity.如果在Activity屏幕打开时启动,则显示并且一切正常.但是,在ICS和JB设备上(我没有测试GB或HC,但Froyo不存在问题)如果Activity在屏幕关闭时启动,则锁定屏幕不会被禁用,并且当活动未显示时手机解锁(通过手动解锁或使用我为后Froyo设备输入的代码).

为什么,至少在ICS和JB设备上,如果没有下面提到的代码,锁屏就不会被禁用,为什么活动显示屏幕Activity在启动时屏幕是否关闭?

这是代码:

BroadcastReceiver:

Intent alarmAlert = new Intent(context, AlarmGoneOffActivity.class);
alarmAlert.putExtra(MyAlarmManager.ALARM_NUM_ID, alarm.ID);
alarmAlert.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | 
                    Intent.FLAG_ACTIVITY_NO_USER_ACTION);
context.startActivity(alarmAlert);
Run Code Online (Sandbox Code Playgroud)

AlarmGoneOffActivity.onCreate():

setContentView(R.layout.alarm_gone_off);

final Window win = getWindow();
win.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | 
             WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | 
             WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | 
             WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON,
             WindowManager.LayoutParams.FLAG_FULLSCREEN | 
             WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | 
             WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | 
             WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
}

//so far all of my post froyo devices (ICS and JB no more GB)
// don't bypass the lockscreen unless we use this
if(Build.VERSION.SDK_INT > Build.VERSION_CODES.FROYO) {
    KeyguardManager …
Run Code Online (Sandbox Code Playgroud)

android android-screen android-windowmanager android-activity

7
推荐指数
1
解决办法
2706
查看次数

Android上下文弱参考

在我的一些应用程序中,我使用一些单例对象作为"管理器".我实例化它们Application.onCreate并将它传递给它ApplicationContext,我将它存储在一个WeakReference.

一些"管理器"方法在从a调用之后启动后台任务Activity,所以我将Activity's' 传递context给方法,并保持一个WeakReference到那个(并在其中使用AsyncTask).该引用一直保持,直到下一次的Activity调用转到后台的方法,当WeakReference设置为新Activitycontext.

我的问题是,是否将ApplicationContext必须保持在WeakReference,并在那里与保持任何问题Activitycontext这样呢?

android android-context android-asynctask android-memory

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

Android动态添加项目到阵列XML资源

有什么办法可以将代码中的项添加到String-Array资源中吗?例如,如果我想创建一个显示用户值的微调器,我想允许用户添加自己的自定义值.

android android-xml

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

目录上的Android Studio蓝色广场

我刚刚将一个项目从Eclipse导入到Android Studio中进行试用.我看到一些目录在右下角有一个蓝色方块,有些目录是蓝色而不是橙色.这是否意味着什么(我认为它确实如此),如果是这样,它意味着什么?

在此输入图像描述

android intellij-idea android-studio

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