如何使用相同的Visual Studio解决方案部署多个WP7应用程序?为实现这一目标,我需要做些什么改变?更改Xap文件名和程序集GUID和标题无法实现.实际上,VS会使用新标题覆盖旧版本,但不会部署单独的应用程序
背景:我们有一个Lite和Pro应用程序,我希望能够将这两个版本部署到手机上.
编辑:
试用API不适合我们.我们已经考虑过但决定不使用它.
是否有正确处理墓碑和后退键的最佳做法?
正如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
.如果页面可以导航到另一个页面,则需要额外检查.
backKeyPressed
变量并检查我创建的每个页面吗?你对此有何看法?
编辑:
更新的问题使其更清晰.
随着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) 我想知道什么是Windows Phone 7上本地存储的可行数据库解决方案.使用搜索我偶然发现了这两个线程,但它们已经有几个月了.我想知道WP7的数据库是否有一些新的开发.我没有找到任何关于下面链接中提到的数据库的评论.
我的要求是:
编辑:
刚刚尝试使用一个简单的测试应用程序Sterling:它看起来不错,但我有2个问题.
使用创建1000条记录需要30秒db.Save(myPerson)
.Person是一个简单的类,有5个属性.
然后我发现有一种db.SaveAsync<Person>(IList)
方法.这很好,因为它不再阻止当前线程.
但我的问题是:是否保存db.Flush()
立即呼叫并对当前正在保存的IList进行查询?(因为在同步模式下保存记录最多需要30秒).或者我必须等到BackgroundWorker完成保存?
使用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 …