小编Buj*_*uju的帖子

使用相同的Visual Studio解决方案部署多个WP7应用程序?

如何使用相同的Visual Studio解决方案部署多个WP7应用程序?为实现这一目标,我需要做些什么改变?更改Xap文件名和程序集GUID和标题无法实现.实际上,VS会使用新标题覆盖旧版本,但不会部署单独的应用程序

背景:我们有一个Lite和Pro应用程序,我希望能够将这两个版本部署到手机上.

编辑:

试用API不适合我们.我们已经考虑过但决定不使用它.

deployment visual-studio-2010 xap windows-phone-7

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

出于性能原因正确处理Tombstoning和Back键?

是否有正确处理墓碑和后退键的最佳做法?

正如MSDN文档中所述,您应该在OnNavigatedFrom方法中保存瞬态数据.好的,所以在墓碑清除时保存状态的代码.

但是现在如果按下后退键,OnNavigatedFrom也会调用该方法,如果不添加额外的检查,则首先将状态保存到字典中,然后不久就会销毁页面.PhoneApplicationPage.State字典也是如此.因此保存代码完全浪费了CPU,磁盘和电池时间.

这就是我为防止它而采取的措施:

    protected override void OnNavigatingFrom(System.Windows.Navigation.NavigatingCancelEventArgs e)
    {
        // when navigating back
        if (e.NavigationMode == System.Windows.Navigation.NavigationMode.Back)
        {
            backKeyPressed = true;
        }
    }

    protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
    {
        if (backKeyPressed)
        {
            // Don't save states on back key!
            backKeyPressed = false;     // set it anyway
            return;
        }

        // Tombstoning
        // save objects
        this.SaveState("text", someText);
        ...
    }
Run Code Online (Sandbox Code Playgroud)

提醒一下:OnNavigatingFrom只有在从页面导航/返回时才会调用,而不是在应用程序被逻辑删除时调用.

附注:显示的代码仅涵盖只能导航回来的页面.这就是为什么我添加backKeypressed OnNavigatingFrom.如果页面可以导航到另一个页面,则需要额外检查.

  1. 是否有更好的方法为您创建的每个页面执行此操作?
  2. 现在我真的必须添加backKeyPressed变量并检查我创建的每个页面吗?
  3. 该框架不应该为我们的开发人员提供一些东西,所以我们不必担心这个问题吗?

你对此有何看法?

编辑:

更新的问题使其更清晰.

back-button windows-phone-7 tombstoning

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

设置sqlite配置SQLITE_CONFIG_SERIALIZED在iOS 5上返回SQLITE_MISUSE

随着iOS 5的发布,我们在为sqlite数据库设置序列化选项时会遇到越来越多的错误(因此将其保存用于多线程).我们在sqlite3_config上收到SQLITE_MISUSE错误代码.有人注意到这种奇怪的行为吗?有人知道如何解决这个问题吗?它在之前的iOS版本上运行得非常好.

这是代码:

- (sqlite3 *)getNewDBConnection {
    NSLog(@"sqlite3 lib version: %s", sqlite3_libversion());

    //sqlite3_config() has to be called before any sqlite3_open calls.

    if (sqlite3_threadsafe() > 0) {
        int retCode = sqlite3_config(SQLITE_CONFIG_SERIALIZED);
        if (retCode == SQLITE_OK) {
            NSLog(@"Can now use sqlite on multiple threads, using the same connection");
        } else {
            NSLog(@"setting sqlite thread safe mode to serialized failed!!! return code: %d", retCode);
        }
    } else {
        NSLog(@"Your SQLite database is not compiled to be threadsafe.");
    }

    sqlite3 *newDBconnection;

    // Open the …
Run Code Online (Sandbox Code Playgroud)

sqlite iphone ios5

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

什么是适用于Windows Phone 7的可行本地数据库?

我想知道什么是Windows Phone 7上本地存储的可行数据库解决方案.使用搜索我偶然发现了这两个线程,但它们已经有几个月了.我想知道WP7的数据库是否有一些新的开发.我没有找到任何关于下面链接中提到的数据库的评论.

我的要求是:

  • 它应该是免费的商业用途
  • 保存/更新记录应该只保存实际记录而不是整个数据库(与WinPhone7 DB不同)
  • 能够使用LINQ快速查询包含~1000条记录的表.
  • 还应该在模拟器中工作

编辑:
刚刚尝试使用一个简单的测试应用程序Sterling:它看起来不错,但我有2个问题.

  1. 使用创建1000条记录需要30秒db.Save(myPerson).Person是一个简单的类,有5个属性.
    然后我发现有一种db.SaveAsync<Person>(IList)方法.这很好,因为它不再阻止当前线程.
    我的问题是:是否保存db.Flush()立即呼叫并对当前正在保存的IList进行查询?(因为在同步模式下保存记录最多需要30秒).或者我必须等到BackgroundWorker完成保存?

  2. 使用LINQ和where子句查询这1000条记录,第一次需要14秒才能加载到内存中.
    有没有办法加快速度?

以下是一些基准测试结果:(单元测试在HTC Trophy上执行)

-----------------------------
purging: 7,59 sec
creating 1000 records: 0,006 sec
saving 1000 records: 32,374 sec
flushing 1000 records: 0,07 sec
-----------------------------
//async
creating 1000 records: 0,04 sec
saving 1000 records: 0,004 sec
flushing 1000 records: 0 sec
-----------------------------
//get all keys 
persons list count = 1000 (0,007)
-----------------------------
//get all …

database windows-phone-7

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