小编Kam*_*eld的帖子

Android SharedPreferences最佳实践

在我构建的应用程序中,我们依赖于SharedPreferences,这让我想到了访问SharedPreferences时的最佳实践.例如,许多人说通过此调用访问它的适当方式:

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

然而,似乎这可能是危险的.如果您有一个依赖于SharedPreferences的大型应用程序,则可能存在密钥重复,尤其是在使用依赖于SharedPreferences的某些第三方库的情况下.在我看来,更好的使用呼叫将是:

Context.getSharedPreferences(String name, int mode)
Run Code Online (Sandbox Code Playgroud)

这样,如果您有一个严重依赖于SharedPreferences的类,则可以创建仅由您的类使用的首选项文件.您可以使用类的完全限定名称来确保该文件很可能不会被其他人复制.

同样基于这个SO问题:是否应该通过UI线程访问SharedPreferences?,似乎访问SharedPreferences应该在UI线程完成,这是有道理的.

在他们的应用程序中使用SharedPreferences时,Android开发人员应该注意哪些其他最佳实践?

java android

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

HttpWebRequest的并发限制

我正在编写一个应用程序来测量我使用C#下载网页的速度.我提供了一个唯一域名列表,然后我生成X个线程并执行HTTPWebRequests,直到消耗了域列表.问题是无论我使用多少线程,我每秒只能获得大约3页.

我发现System.Net.ServicePointManager.DefaultConnectionLimit是2,但我的印象是这与每个域的连接数有关.由于列表中的每个域都是唯一的,因此这不应成为问题.

然后我发现GetResponse()方法阻止来自所有其他进程的访问,直到关闭WebResponse:http://www.codeproject.com/KB/IP/Crawler.aspx#WebRequest,我还没有找到任何关于web支持这个声明,但我使用套接字实现了一个HTTP请求,我注意到了一个显着的加速(4x到6x).

所以我的问题是:有没有人确切知道HttpWebRequest对象是如何工作的?除了上面提到的内容之外还有解决方法吗?还是有任何用C#编写的高速网络爬虫的例子?

.net c# multithreading httpwebrequest httpwebresponse

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

为什么RequestAdditionalTime()方法不能在Vista/7中重启?

我一直在对我用C#.Net 3.5编写的Windows服务进行一些广泛的测试.我无法让Windows给我足够的时间让我的服务在我重新启动或关闭计算机时正常关闭,即使我正在调用RequestAdditionalTime()方法,它应该更新SCM并保持我的服务运行.如果我手动停止服务,我的代码可以正常工作.我主要是在Windows Vista和Windows 7中测试此代码,在决定在Windows XP中测试代码时,一切都运行得很好.有谁知道为什么这个电话在Vista/7不起作用?我想我需要某种权限来保持系统不被关闭,我默认在Xp中但不在Vista/7中.

.net c# windows-services windows-vista windows-7

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

OCUnit测试从命令行失败,但在使用Keychain Services时在Xcode中工作

我正在使用SFHFKeychainUtils在我的应用程序中使用Keychain服务.我写了一些OCUnit测试来验证这段代码的功能.当我在iOS模拟器或我的设备上运行Xcode的单元测试时,一切正常.但是现在我正在尝试设置CI服务器,并且当它通过命令行运行时测试失败,错误代码为-25291.仔细查看Apple的文档告诉我:没有可用的信任结果(errSecNotAvailable).我已将Security.framework链接到我的单元测试项目,看起来就像我在网上看到的那样,这是我需要的才能让它工作.这是我在控制台中调用的命令:

/usr/bin/xcodebuild -target [Test_Target] -sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk/ -configuration Debug

有没有人有任何经验或建议让单元测试和钥匙串服务从命令行很好地一起玩?

continuous-integration unit-testing ocunit ios sfhfkeychainutils

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

强制窗口等待服务在关闭时停止

我遇到了一个我用C#编写的Windows服务无法解决的问题.我想要做的是等待一个指定的时间让子进程终止,然后我被迫杀死它并停止服务.我将超时设置为5到15秒之间的任何时间,我的服务等待适当的时间,然后杀死孩子并在我通过mmc服务窗口停止时停止.但是,如果我关闭计算机,我的服务会在能够等待和正常停止之前被吹走.我已经读过Windows允许服务在关闭之前超时30秒.我的代码执行的时间远远少于30秒,最大值约为20秒左右,具体取决于我设置的超时时间.

我尝试在win32 Api中使用SetServiceStatus()函数,但它没有改变代码的功能.我已经验证函数调用是否成功.有没有其他方法可以强制Windows等待我的服务正常关闭?我在Windows 7 x86和Windows Vista Sp1 x86中测试它.

.net c# windows windows-services

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

仅适用于iPad的Settings.bundle?

我有一种情况需要通过设置应用程序为我的应用程序提供一个设置.我的应用程序是通用的,但这个特殊的设置只在iPad上有意义,所以我只希望我的应用程序显示在iPad上的设置中.这可能吗?我还没有找到办法,并尝试了以下方法:

1)将Settings.bundle重命名为Settings~ipad.bundle.我的应用程序未显示在任一设备的"设置"中.我相信它必须命名为Settings.bundle.

2)将Root.plist重命名为Root~ipad.plist.在iPhone上,我的应用程序的设置条目仍然存在,但没有可用的设置.我不希望这个条目存在.

3)我尝试删除Settings.bundle(如果它存在),当我的应用程序第一次启动时我在iPhone上,但Settings.bundle只读.

settings cocoa-touch ios

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

是什么导致计划的线程不能在Java中运行?

我开发了一个小型Java应用程序,它通过计划的执行程序服务运行两个计划的线程.在大多数计算机上,我的应用运行得很好 然而,在测试中,我遇到了一台计算机,我的线程没有按照它们应该或根本不运行的频率运行.我有一个线程计划以250毫秒的间隔运行.它只是检查std中是否有任何要读取的内容,如果它有读取并执行命令.这个线程偶尔运行,但从来没有像它应该的那样经常运行.我的另一个线程每5秒运行一次,只需在屏幕上打印一些东西.它运行一次然后再也不会运行.这是我正在使用的代码:

    scheduledThreadManager.scheduleWithFixedDelay(new Runnable()
    {
        @Override
        public void run()
        {
            try
            {
                if(inputReader.ready())
                {
                    String command = inputReader.readLine();
                    executeCommand(command);
                }
            }
            catch(IOException e)
            {
                System.out.println(e.toString());
                e.printStackTrace();
            }
        }
    }, 250, 250, TimeUnit.MILLISECONDS);

    scheduledThreadManager.scheduleWithFixedDelay(new Runnable()
    {
        @Override
        public void run()
        {
            System.out.println(idleString);
        }
    }, 0, 5000, TimeUnit.MILLISECONDS);
Run Code Online (Sandbox Code Playgroud)

我已确保在执行计划的线程期间我的应用程序没有挂起.计算机里面有一个Core2Duo处理器,所以我看不出硬件是如何无法满足我的需求的,但也许并非如此.另一件有趣的事情是,除了这些之外我运行的是一个主应用程序线程,它运行正常.任何对这个问题的原因的输入都将非常感激.

java multithreading scheduled-tasks

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

Java中的异步Web请求?

我正在用Java编写一个简单的Web爬虫.我希望它能够每秒下载尽可能多的页面.是否有一个包使得Java中的异步HTTP Web请求变得容易?我使用了HttpURLConnection但是阻塞了.我也知道Apache的HTTPCore NIO中有一些东西,但我正在寻找更轻量级的东西.我尝试使用这个包,我在多个线程上使用HttpURLConnection获得了更好的吞吐量.

java multithreading httpurlconnection web-scraping

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