我需要一个"Runnable接受一个参数",虽然我知道这样的runnable并不存在.
这可能指出我的应用程序设计中的根本缺陷和/或疲惫的大脑中的心理障碍,所以我希望在这里找到关于如何完成以下内容的一些建议,而不违反基本的OO原则:
private Runnable mOneShotTask = new Runnable(String str) {
public void run(String str) {
someFunc(str);
}
};
Run Code Online (Sandbox Code Playgroud)
知道如何完成上述内容吗?
根据android Activity Lifecycle,唯一保证被调用的回调(如果一个活动离开Running状态,这通常是预期的)onPause().
因此,我必须假设有些情况下实施它们是有意义的onStop(),onDestroy()尽管它们并没有真正保证被调用.
我理解,onStop()当一个活动可能通过Stopped状态返回Running状态时应该实现(为什么它会这样做而不是直接返回是一个不同的问题).
但是onDestroy(),当我可以将所有清理/状态保存放入时onPause(),需要我不清楚.
你能描述一下实际的应用情况(即不能驾驶汽车等),实施它是否合理onDestroy()?
在C,有一个min()方便的宏,有助于使代码更具可读性.
在java中,我所知道的最短等价物是:
(a > b ? b : a)
Run Code Online (Sandbox Code Playgroud)
但它并不像min()我认为的那样是自我记录的.
Java中是否有内置的min()方法(我找不到它)?或者我唯一的办法是自己定义这样的方法?
在Android开发者参考说,无论是WebView.PictureListener界面和它的onNewPicture()方法已过时.
很好,但需要知道WebView何时渲染图片仍然存在.有没有其他方法来实现这一目标?
我遇到了这个Android WebView功能WebSettings.setDomStorageEnabled(true),仅凭名称我可以推断它只是"启用DOM存储".
但是,Android文档提示了一些略有不同的内容:
设置是否启用DOM存储API.
IOW,它启用API而不是存储本身.
我的问题是......在遇到这个函数之前,我不知道是否存在这样的API.
我的Google搜索表明此API与HTML5密切相关.
WebSettings.setDomStorageEnabled(true)
在使用Android应用程序时,我需要注意哪些问题或警告
?更新:我现在至少可以回答问题#2:事实证明"DOM存储"的通用名称是"Web存储",并且有一篇关于此的整篇维基百科文章:http://en.wikipedia.org/wiki/Web_Storage
我有一个Android库项目一直很适合我,但现在我有兴趣将它"转换"为外部JAR.
我怎么做?
任何Android库项目都可以转换为外部JAR吗?如果没有,有什么限制或限制?
我注意到,当通过从TestCase和派生的测试类测试普通Java类时AndroidTestCase,LogCat输出消失了.
是否仍然可以捕获这些消息的输出?或者我唯一的办法是使用更加缓慢ActivityInstrumentationTestCase2<>的基础类?
我在首选项XML中定义了一个简单的(非用户可编辑的)数字设置,如下所示:
<EditTextPreference
android:key="@string/numeric_val"
android:defaultValue="0" />
Run Code Online (Sandbox Code Playgroud)
我用这个简单的陈述读了它:
sharedPrefs.getInt(getString(R.string.numeric_val), 3)
Run Code Online (Sandbox Code Playgroud)
它可以工作,但是当我尝试阅读它时,在应用程序安装后第一次生成一个ClassCastException.
该文件说,getInt() "抛出ClassCastException -如果有这个名字是不是一个整数的偏好." - 我知道这个首选项被明确定义为<EditTextPreference>(字符串?)但是,如果这是异常的原因,我应该如何使用SharedPreferences.getInt()?
我知道我可以使用 SharedPreferences.getString(),然后自己进行解析/转换,但那么目的是SharedPreferences.getInt()什么?
以下错误来自Android(WebView),而不是直接来自我自己的代码:
04-28 12:36:15.174: ERROR/Web Console(7604):
Uncaught TypeError: Cannot call method 'getItem' of null at http://m.youtube.com/:844
Run Code Online (Sandbox Code Playgroud)
除了将该URL加载到WebView之外,我真的没有做任何特别的事情.大多数时候我没有得到这个错误,所以我假设这可能指向一些不可靠的网络条件?也许youtube.com太忙了?
这很难说.无论如何,我想至少知道可能导致这种情况的原因以及是否可以捕获该错误以便我能够更好地处理它.
同样,我自己的代码不知道是什么getItem.另一方面,出现此问题时,我的WebView上的YouTube页面就是空的.
见解?
编辑:我一直在寻找有关提议的文档WebSettings.setDomStorageEnabled(true).到目前为止我能找到的唯一提示是在这个SO线程中:正如我之前提到的,这个问题很少发生,并且自从我发布我的问题以来没有发生过.所以我必须先了解一下这个与"DOM存储"之间的联系,然后才能设计一种方法来测试/验证这是否能解决问题.
此外,我刚刚遇到另一个错误消息(良性结果,所以看起来):
05-02 00:44:45.823: ERROR/Web Console(1595):
dojo.back.init() must be called before the DOM has loaded.
If using xdomain loading or djConfig.debugAtAllCosts,
include dojo.back in a build layer.
at http://sj.example.com/ncscript/subsect/j_gs/version/20110428191502.js:164
Run Code Online (Sandbox Code Playgroud)
我现在可以看到与DOM的一些连接,所以看起来@Brian O'Dell的方向正确.我只需要了解WebSettings.setDomStorageEnabled(true)它的作用.
我遇到了一些包含的正则表达式[^\\p{L}].我知道这是使用某种形式的Unicode类别,但是当我检查文档时,我发现只有以下"L"类别:
Lu Uppercase letter UPPERCASE_LETTER
Ll Lowercase letter LOWERCASE_LETTER
Lt Titlecase letter TITLECASE_LETTER
Lm Modifier letter MODIFIER_LETTER
Lo Other letter OTHER_LETTER
Run Code Online (Sandbox Code Playgroud)
什么是L在这种情况下?