小编mag*_*tte的帖子

SparseArray,检查密钥是否存在

我使用a实现了一个Bitmap缓存,HashMap<Integer, Bitmap>并在Eclipse中收到以下警告:

使用新的SparseArray(...)代替更好的性能.

我之前从未听过那个类,但检查它似乎没有一个containsKey()方法,我正在调用从缓存中检索Bitmap来检查它是否存在于缓存中,如果不存在,然后添加它.

有关检查密钥是否已存在的最佳方法的任何想法?

我想我可以更改代码以使用此重载并检查null?

Bitmap bitmap = cache.get(key, null); 
Run Code Online (Sandbox Code Playgroud)

java android hashmap sparse-array

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

如何将依赖项注入global.asax.cs

如何将依赖项注入global.asax.cs,即MvcApplication类?

以前使用服务定位器(反)模式进行依赖注入,我试图通过使用IOC容器(特别是Unity.Mvc3,因为它附带了IDependencyResolver的实现)来遵循我最新的MVC应用程序中的最佳实践建议.框)和构造函数注入.

到目前为止,一切似乎都非常直接,除了一些障碍,其中一个在global.asax.cs中(另一个是自定义属性,但在SO上覆盖了这个问题).

MvcApplication类中的HttpApplication事件处理程序,例如:

Application_Start()
Application_EndRequest(object sender, EventArgs e)
Application_AcquireRequestState(object sender, EventArgs e)
Run Code Online (Sandbox Code Playgroud)

可能需要外部依赖,例如依赖ILogService.那么如何在不借助例如服务定位器(反)模式的情况下注入它们

private static ILogService LogService
{
    get
    {
        return DependencyResolver.Current.GetService<ILogService>();
    }
}
Run Code Online (Sandbox Code Playgroud)

任何帮助/建议非常感谢!

dependency-injection unity-container asp.net-mvc-3

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

无法设置webkit-scrollbar-thumb的宽度

我正在尝试设置一个适用于Chrome和Safari的自定义滚动条.我试过以下CSS:

::-webkit-scrollbar {
    width: 15px;
}

::-webkit-scrollbar-track {
    background-color: rgba(100, 100, 100, .5);
    width: 15px;
}

::-webkit-scrollbar-thumb {
    background-color: #818B99;
    border-radius: 9px;
    width: 9px;
}
Run Code Online (Sandbox Code Playgroud)

然而,width-webkit-scrollbar-thumb被忽略.如上所述,我希望拇指比轨道更薄.

似乎我可以通过在-webkit-scrollbar-thumb3px上设置与轨道颜色相同的边框来伪造宽度,但是这仅适用于不透明的背景颜色,我需要它以如上所述的轨道使用透明颜色.

示例jsfiddle:http://jsfiddle.net/L6Uzu/1/

webkit css3

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

DataOutputStream和ObjectOutputStream之间有什么区别?

我正在学习Java中的套接字编程.我已经看到客户端/服务器应用程序示例有一些使用DataOutputStream,有些使用ObjectOutputStream.

这两者有什么区别?

有性能差异吗?

java sockets android

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

用于jsDoc注释的正确套管是什么?

我最近开始使用jsdoc注释来记录我们的javascript代码,但是我发现@param标记的使用存在矛盾的例子.

请参阅https://code.google.com/p/jsdoc-toolkit/wiki/TagParam(PascalCase)

https://developers.google.com/closure/compiler/docs/js-for-compiler(camel/lowercase).

camelCase对我来说很有意义:

var foo = 1;
console.log(typeof foo); // outputs "number"
Run Code Online (Sandbox Code Playgroud)

什么是用于jsDoc @param评论的正确套管?或者没关系?我打算将它用于文档生成以及通过谷歌闭包运行代码以进行类型检查.

谢谢!

case-sensitive google-closure-compiler jsdoc

17
推荐指数
1
解决办法
1862
查看次数

有没有办法只检测水平滚动而不触发浏览器重排

您可以使用以下方法检测任意元素上的浏览器滚动事件:

element.addEventListener('scroll', function (event) {
    // do something
});
Run Code Online (Sandbox Code Playgroud)

我希望能够区分垂直滚动和水平滚动,并独立执行它们的操作.

我目前正在通过存储element.scrollTop和element.scrollLeft的值,然后在事件侦听器中比较它们来做到这一点.例如

var scrollLeft, scrollTop;
element.addEventListener('scroll', function (event) {
    if (scrollLeft !== element.scrollLeft) {
        // horizontally scrolled

        scrollLeft = element.scrollLeft;
    }

    if (scrollTop !== element.scrollTop) {
        // vertically scrolled

        scrollTop = element.scrollTop;
    }
});
Run Code Online (Sandbox Code Playgroud)

这很好,但是从https://gist.github.com/paulirish/5d52fb081b3570c81e3a我读到读取scrollLeft或scrollTop值会导致重排.

有没有更好的方法来做到这一点,而不会导致滚动浏览器重排?

javascript html5 reflow

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

Android:MediaPlayer未经发布而最终确定

我正在使用我正在处理的应用程序中的MediaPlayer类.我希望在我的Activity的生命周期中保留一个MediaPlayer类的实例.我正在活动的onPause(){}方法中释放MediaPlayer类中的资源,但是当活动开始时,我会在LogCat窗口中弹出以下警告:

W/MediaPlayer-JNI(16795): MediaPlayer finalized without being released
Run Code Online (Sandbox Code Playgroud)

知道我在这里做错了什么或如何删除此警告?它似乎没有引起任何问题,声音效果很好.

我有一些太多的代码要发布,因为我包装了一些对象以允许管理状态(MediaPlayer类当前不提供状态信息),以及其他各种原因,但代码非常多:

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    initialiseSounds(this);
}

@Override
protected void onPause()
{
    soundManager.releaseResources();
}

@Override
protected void onResume()
{
    initialiseSounds(this);
}
Run Code Online (Sandbox Code Playgroud)

在我的SoundManager类中使用此方法:

public void releaseResources()
{
    player.release();
}
Run Code Online (Sandbox Code Playgroud)

在初始化声音我正在做:

MediaPlayer player = new MediaPlayer();
player.reset();
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
AssetFileDescriptor assetFileDescriptor = context.getResources().openRawResourceFd(resourceId);
setDataSource(player, assetFileDescriptor);
Run Code Online (Sandbox Code Playgroud)

当我想播放曲目时,我会:

player.prepare();
player.start();
Run Code Online (Sandbox Code Playgroud)

感谢任何建议,

谢谢,

android android-mediaplayer

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

使用Moq在C#中进行单元测试保护的方法

最近我注意到你可以使用Moq对抽象基类进行单元测试,而不是在测试中创建一个实现抽象基类的虚拟类.请参见如何使用moq测试抽象类中的具体方法?你可以这样做:

public abstract class MyAbstractClass 
{
    public virtual void MyMethod()
    {
        // ...    
    }
}

[Test]
public void MyMethodTest()
{
    // Arrange            
    Mock<MyAbstractClass> mock = new Mock<MyAbstractClass>() { CallBase = true };

    // Act
    mock.Object.MyMethod();

    // Assert
    // ... 
}
Run Code Online (Sandbox Code Playgroud)

现在我想知道是否有类似的技术允许我测试受保护的成员而不必创建包装类.即你如何测试这种方法:

public class MyClassWithProtectedMethod
{
    protected void MyProtectedMethod()
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

我知道Moq.Protected命名空间,但据我所知它只允许你设置期望与例如

mock.Protected().Setup("MyProtectedMethod").Verifiable();
Run Code Online (Sandbox Code Playgroud)

我也知道这里显而易见的答案是"不测试受保护的方法,只测试公共方法",然而这是另一个争论!我只想知道是否可以使用Moq.

更新:下面是我正常测试的方法:

public class MyClassWithProtectedMethodTester : MyClassWithProtectedMethod
{
    public void MyProtectedMethod()
    {
        base.MyProtectedMethod();
    }
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

c# moq

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

Android警告:检查表面信息creation = false

当我运行我的Android应用程序时,我在LogCat窗口中注意到以下警告:

Tag: SurfaceView
Text: CHECK surface infomation creating=false formatChanged=false 
sizeChanged=false visible=false visibleChanged=true surfaceChanged=true 
realSizeChanged=false redrawNeeded=false left=false top=false
Run Code Online (Sandbox Code Playgroud)

这是什么意思?它似乎没有引起任何问题,但摆脱警告会很好.

android surfaceview

15
推荐指数
1
解决办法
3518
查看次数

Admob插页式方向在启动时锁定到初始设备方向

我在整合Admob插页式广告时遇到了问题.我的应用程序支持纵向和横向,因此我将清单设置为:

android:screenOrientation="fullSensor"
Run Code Online (Sandbox Code Playgroud)

问题是Admob插页式广告在启动时似乎已固定/锁定到设备的原始方向.例如,如果我以纵向方向启动应用程序,然后将设备旋转到横向,然后显示广告,则它会显示在其侧面(纵向)...

如何强制插页式广告重置为新的设备方向?

我正在加载广告,如下所示:

interstitialAd = new InterstitialAd(activity);
interstitialAd.setAdUnitId(Config.ADMOB_UNIT_ID);

AdRequest adRequest = new AdRequest.Builder()
    .addTestDevice("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
    .build();

interstitialAd.loadAd(adRequest);
Run Code Online (Sandbox Code Playgroud)

然后像这样显示:

interstitialAd.show();
Run Code Online (Sandbox Code Playgroud)

android admob

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