小编cho*_*hop的帖子

分配游标时内存不足

我有一个我无法弄清楚的记忆问题.我有一个类来完成我的所有数据库检索工作.我遇到的错误如下:

android.database.CursorWindowAllocationException: Cursor window allocation of 2048 kb failed. # Open Cursors=733 (# cursors opened by this proc=733)
Run Code Online (Sandbox Code Playgroud)

执行此操作时发生内存分配错误:

mDatabaseInterface.getGraphForLevel(level);
Run Code Online (Sandbox Code Playgroud)

我知道这是一个泄漏,因为我大约每2.5秒调用一次这种方法,并且5或6个第一次调用很容易通过.现在这里是我的DatabaseInterface类中的方法:

public Graph getGraphForLevel(Level level) {

    //get the nodes
    ArrayList<Node> nodes = new ArrayList<Node>(Arrays.asList(this.getNodesWithLevel(level)));
    //get the edges
    ArrayList<Edge> edges = new ArrayList<Edge>(Arrays.asList(this.getEdgesWithNodes(nodes)));

    return new Graph(nodes, edges);
}

public Node[] getNodesWithLevel(Level level) {

    List<Node> l = new ArrayList<Node>();

    Cursor cursor = mDatabase.query("nodes", null, 
            "level = " + wrapSql(String.valueOf(level.getId())), null, null, null, null);

    while (cursor.moveToNext()) {
        l.add(parseNodeFromCursor(cursor));
    }

    cursor.close();

    return l.toArray(new Node[l.size()]); …
Run Code Online (Sandbox Code Playgroud)

memory sqlite android memory-leaks cursor

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

在initWithCoder中设置自定义UITableViewCell样式:不起作用

我有一些自定义UITableViewCell的问题以及如何使用故事板管理事物.当我把样式代码放入initWithCoder:其中时不起作用,但如果我把它放入其中tableView: cellForRowAtIndexPath:就行了.在storyboard中我有一个原型单元格,其class属性设置为我的UITableViewCell自定义类.现在代码initWithCoder:被调用了.

SimoTableViewCell.m

@implementation SimoTableViewCell

@synthesize mainLabel, subLabel;

-(id) initWithCoder:(NSCoder *)aDecoder {
    if ( !(self = [super initWithCoder:aDecoder]) ) return nil;

    [self styleCellBackground];
    //style the labels
    [self.mainLabel styleMainLabel];
    [self.subLabel styleSubLabel];

    return self;
}

@end
Run Code Online (Sandbox Code Playgroud)

TableViewController.m

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"NearbyLandmarksCell";
    SimoTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    //sets the text of the labels
    id<SimoListItem> item = (id<SimoListItem>) [self.places objectAtIndex:[indexPath row]];
    cell.mainLabel.text = [item mainString];
    cell.subLabel.text = [item subString]; …
Run Code Online (Sandbox Code Playgroud)

uitableview ios

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

由PriorityBlockingQueue支持的ThreadPoolExecutor似乎不起作用

我有很多图片要从服务器上获取,我想要获取一些优先级高于其他图片的图片,所以我已经实现了我自己的图片ThreadPoolExecutor返回一个FutureTask实现,Comparable但它似乎不起作用.这些任务或多或少按照我将它们添加到队列的顺序进行处理.我调试了BlockingQueue我的ThreadPoolExecutor并发现当我添加Runnable更高优先级时,它不会在队列顶部一直向上移动.这是代码

public class PriorityThreadPoolExecutor extends ThreadPoolExecutor {

    public PriorityThreadPoolExecutor(int corePoolSize, int maximumPoolSize,
            long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) {
        super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue);
    }

    protected <T> RunnableFuture<T> newTaskForValue(Runnable runnable, T value) {
        return new ComparableFutureTask<T>(runnable, value);
    }

    protected class ComparableFutureTask<T> 
    extends FutureTask<T> implements Comparable<ComparableFutureTask<T>> {

        private Object object;

        public ComparableFutureTask(Runnable runnable, T result) {
            super(runnable, result);
            object = runnable;
        }

        @Override
        @SuppressWarnings({ "unchecked", "rawtypes" })
        public int …
Run Code Online (Sandbox Code Playgroud)

java priority-queue threadpool threadpoolexecutor

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

:、- 和 _ 字符的 FTS3 和 FTS4 匹配

我在启用 FTS 的 SQLite 数据库上看到一些奇怪的行为。我有一个名为 的表fingerprints,其中包含名为 的列scan。scan 的条目是长字符串,如下所示:

00:13:10:d5:69:88_-58;0c:85:25:68:b4:30_-75;0c:85:25:68:b4:34_-76;0c:85:25:68:b4:33_-76;0c:85:25:68:b4:31_-76;0c:85:25:68:b4:35_-76;00:23:eb:ad:f6:00_-87; etc
Run Code Online (Sandbox Code Playgroud)

它代表 MAC 地址和信号强度。现在我想在表上进行字符串匹配并尝试匹配例如 MAC 地址:

SELECT _id FROM fingerprints WHERE scan MATCH "00:13:10:d5:69:88";
Run Code Online (Sandbox Code Playgroud)

由于某种原因,这会返回许多没有指定字符串的行。我要尝试匹配的第二件事是

SELECT _id FROM fingerprints WHERE scan MATCH "00:13:10:d5:69:88_-58";
Run Code Online (Sandbox Code Playgroud)

这将返回与之前相同的行,并且是完全错误的。

: _ -SQLite 是否以任何特殊方式处理字符?

谢谢

sqlite android full-text-search match

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

Hashtable中最大值的关键

嗨,我有以下对象:

Hashtable<Object, Double>
Run Code Online (Sandbox Code Playgroud)

我想找到表中最大Double值的键.最简单的方法吗?

谢谢

java hashtable max

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

计算向量中的所有差异可能性

假设我有一个短向量x = [a,b,c,d,e];什么是计算向量成员之间所有差异的最佳方法:

y = [e-d e-c e-b e-a
     d-e d-c d-b d-a
     c-e c-d c-b c-a
     b-e b-d b-c b-a
     a-e a-d a-c a-b];
Run Code Online (Sandbox Code Playgroud)

提前致谢

math matlab vector

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

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

为什么在使用 HashMap 的 or_insert 时会调用闭包?

我从 Rust 开始,在理解以下代码片段如何输出它的作用时遇到了麻烦。or_insert当条目存在时,当然不应该调用方法中的闭包,或者我完全错过了什么?

struct Cacher {
    result: HashMap<u32, u32>,
}

impl Cacher {
    fn new() -> Cacher {
        Cacher{
            result: HashMap::new()
        }
    }

    fn result(&mut self, arg: u32) -> u32 {
        match self.result.get(&arg) {
            Some(v) => println!("I have value {} for {}", v, arg),
            None => println!("No value for {}", arg)
        }
        let closure = |x| {
            println!("Doing complicated stuff.....");
            thread::sleep(Duration::from_secs(2));
            x + 42
        };
        let v = self.result.entry(arg).or_insert((closure)(arg));
        *v
    }
}

fn main() {
    let mut business_logic …
Run Code Online (Sandbox Code Playgroud)

hashmap rust

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

最有效的方法使android.net.wifi.ScanResult成为可比的?

我想按BSSID级别对android wifi ScanResult对象进行排序.最有效的方法是什么?我是否必须创建自己的Comparable ScanResult并编写代码以转换为ScanResult或从ScanResult转换?

performance android comparable android-wifi

0
推荐指数
1
解决办法
632
查看次数