我在我的Android应用程序中使用webview,但是在它完成加载后 - 我可以通过onPageFinished(WebView webview,String url)检测到 - 页面继续无限增长.
我怎样才能防止这种情况发生?
这就是我的工作.
我有一个包含ScrollView的通用页面模板.宽度和高度设置为与父级匹配.在ScrollView中,我创建的所有活动都有几个常见元素.其中一个是LinearLayout,我插入所有用户内容.
.....
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:layout_margin="0dp"
android:padding="0dp"
android:scrollbars="none"
>
......
<LinearLayout
android:id="@+id/content"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="0dp"
android:padding="0dp"
android:orientation="vertical">
//EVERY USER CONTENT GOES HERE
</LinearLayout>
......
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
.....
在此特定情况下,内容是网页,使用移动网络API加载Google地图.这是布局文件
<?xml version="1.0" encoding="utf-8"?>
<WebView
android:id="@+id/maps"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_margin="0dp"
android:padding="0dp"
/>
Run Code Online (Sandbox Code Playgroud)这是我的活动的代码,初始化webview
.... WebView wv =(WebView)this.content.findViewById(R.id.maps);
WebSettings ws = wv.getSettings();
ws.setPluginState(PluginState.ON);
ws.setSupportZoom(false);
ws.setLightTouchEnabled(true);
ws.setDomStorageEnabled(true);
ws.setAppCacheMaxSize(1024 * 1024 * 8);
ws.setAppCachePath(context.getCacheDir().getAbsolutePath());
ws.setAppCacheEnabled(true);
ws.setAllowFileAccess(true);
ws.setCacheMode(WebSettings.LOAD_NORMAL);
ws.setJavaScriptEnabled(true);
wv.setInitialScale(0);
wv.addJavascriptInterface(new Object(), "Android");
wv.setKeepScreenOn(true);
Run Code Online (Sandbox Code Playgroud)最后,当我通过wv.loadUrl("......")加载地图时;
页面完成加载后,我得到以下日志,webview在无限循环中增长
02-18 14:16:06.195: …Run Code Online (Sandbox Code Playgroud) 我有一个有TextView的活动,我想不断更新文本..
在Java中,我可以创建一个无限的while循环,并且只需在每次迭代时设置文本.
但是当我尝试在Android中执行此操作时,它会显示黑屏,甚至不会加载活动.
我把无限放在onCreate方法中,也许这就是它崩溃的原因..但如果是的话,我应该把它放在哪里?
我试图实现一个函数(如下所述),它接受两个列表(每个或两个可能是无限的)并返回列表之间所有可能元素对的元组列表
zipInf :: [a] -> [b] -> [(a,b)]
Run Code Online (Sandbox Code Playgroud)
(例如输出应该是这样的,但不一定非常像这样)
zipInf [0 .. 2] ['A' .. 'C'] ~> [(0,'A'),(1,'A'),(0,'B'),(1,'B'),(0,'C'),(2,'A'),(2,'B'),(1,'C'),(2,'C')]
zipInf [] [0 ..] ~> []
zipInf [0 ..] [] ~> []
take 9 (zipInf ['A'] [0 .. ]) ~> [('A',0),('A',1),('A',2),('A',3),('A',4),('A',5),('A',6),('A',7),('A',8)]
Run Code Online (Sandbox Code Playgroud)
我开始像这样实现它:
zipInf :: [a] -> [b] -> [(a,b)]
zipInf [] _ = []
zipInf _ [] = []
zipInf
Run Code Online (Sandbox Code Playgroud)
我想将列表提供给一个帮助函数来生成列表,但是我创建的列表无法编译,也不知道如何处理无限列表
辅助功能 -
oneList :: [a] -> [b] [(a,b)]
oneList [] _ = []
oneList x:xs y:ys = [(x,y)] ++ oneList
Run Code Online (Sandbox Code Playgroud) 假设我希望得到一个排序无限的所有素数列表,直到指数n.
我有一个函数来合并两个排序列表和一个给我素数的函数.
merge :: Ord t => [t] -> [t] -> [t]
merge (x:xs) (y:ys)
| (x <= y) = x : merge xs (y:ys)
| otherwise = y : merge (x:xs) ys
merge xs [] = xs
merge [] ys = ys
primes :: [Integer]
primes = sieve [2..]
where
sieve [] = []
sieve (p:xs) = p : sieve (filter (\x -> x `mod` p /= 0) xs)
Run Code Online (Sandbox Code Playgroud)
我有两个版本的listOfPrimepowers功能:
primepowers :: Integer -> [Integer] …Run Code Online (Sandbox Code Playgroud) 有用于产生汉明数的无限流(即所有的正整数公知的解决方案n,其中n = 2^i * 3^j * 5^k).我在F#中以两种不同的方式实现了这一点.第一种方法使用seq<int>.解决方案很优雅,但性能很糟糕.第二种方法使用尾部被包裹的自定义类型Lazy<LazyList<int>>.解决方案很笨重,但性能却令人惊叹.
有人可以解释为什么性能使用seq<int>如此糟糕,如果有办法解决它?谢谢.
方法1使用seq<int>.
// 2-way merge with deduplication
let rec (-|-) (xs: seq<int>) (ys: seq<int>) =
let x = Seq.head xs
let y = Seq.head ys
let xstl = Seq.skip 1 xs
let ystl = Seq.skip 1 ys
if x < y then seq { yield x; yield! xstl -|- ys }
elif x > y then seq { yield y; yield! …Run Code Online (Sandbox Code Playgroud) 在我正在研究的项目中,某种类型的数据有时可能包含在其中.例如,
data Example = Apple Int
| Pear Int Example
a = Pear 10 a
b = Pear 10 b
Run Code Online (Sandbox Code Playgroud)
作为程序员,我知道a并且b是相同的,但是当我实际测试它们之间的相等时,它将无限循环,因为它们的值需要进行评估以进行比较.
有没有其他方法可以在这些数据之间进行相等测试?或者有没有办法避免像这样的问题?
是否有可能在for循环中获得无限循环?
我的猜测是Python中可能存在无限循环.我想知道这个以供将来参考.
numpy似乎不是复杂无穷大的好朋友
虽然我们可以评估:
In[2]: import numpy as np
In[3]: np.mean([1, 2, np.inf])
Out[3]: inf
Run Code Online (Sandbox Code Playgroud)
以下结果更加繁琐:
In[4]: np.mean([1 + 0j, 2 + 0j, np.inf + 0j])
Out[4]: (inf+nan*j)
...\_methods.py:80: RuntimeWarning: invalid value encountered in cdouble_scalars
ret = ret.dtype.type(ret / rcount)
Run Code Online (Sandbox Code Playgroud)
我不确定想象中的部分对我有意义.但如果我错了,请发表评论.
有关与numpy中复杂无穷大相互作用的任何见解?
我有一些包含几个字段的类.我需要按值比较它们,即如果它们的字段包含相同的数据,则类的两个实例是相等的.我已经覆盖了GetHashCode它的Equals方法.
可能会发生这些类包含循环引用.
示例:我们想要建立机构(如政府,体育俱乐部等).一个机构有一个名字.A Club是具有名称和成员列表的机构.每个成员Person都有一个名字和最喜欢的机构.如果某个俱乐部的成员将该俱乐部作为他最喜欢的机构,我们有一个循环参考.
但循环引用与值相等一起导致无限递归.这是一个代码示例:
interface IInstitution { string Name { get; } }
class Club : IInstitution
{
public string Name { get; set; }
public HashSet<Person> Members { get; set; }
public override int GetHashCode() { return Name.GetHashCode() + Members.Count; }
public override bool Equals(object obj)
{
Club other = obj as Club;
if (other == null)
return false;
return Name.Equals(other.Name) && Members.SetEquals(other.Members);
}
}
class Person
{
public string …Run Code Online (Sandbox Code Playgroud) 所以我试图在Haskell中生成一个出租车编号列表.出租车编号是可以用两种不同方式写成两个不同立方体之和的数字 - 最小的是
1729 = 1^3 + 12^3 = 9^3 + 10^3.
现在,我只是生成了四个"组成"出租车编号的数字,例如(1,12,9,10),并被告知使用列表理解(我不太熟悉) ).此函数将生成所有4元组,其中最大数字最多为n:
taxi n = [(a,b,c,d) | a <- [1..n], b <- [1..n], c <- [1..n], d <- [1..n], a^3 + b^3 == c^3 + d^3, a < b, a < c, c < d]
但是,由于以下几个原因,它很麻烦:
[1..n]只写一次.a <- [1..]等等,那么程序永远不会最终评估任何东西.taxi 5019秒.任何速度优化也都会很好,但如果不是我使用的天真方法就足够了.