Windows Mobile 开发常见问题集(二)(转载)

来源:互联网 发布:上海电力设计院 知乎 编辑:程序博客网 时间:2024/05/20 16:45
 

HTML Tags and JavaScript tutorial



Windows Mobile 开发常见问题集(二)(转载)









Windows Mobile 开发常见问题集(二)




http://develop.csai.cn/mobile/200606081144021263.htm






1、Q:请问如何才能保证应用程序能够及时地释放系统资源?
  
  A:由于.NET Compact Framework所运行的移动设备,受限于CPU、内存、电源,因此其中的Garbage Collection时经过调整的,垃圾回收的速度比.NET Framework更快。通过调用Dispose()方法,可以立即释放掉对象所占用的非托管资源。
2、Q:在Visual Studio中可以定义一个所有文件都可以使用的宏吗?比如:#define AA,要求在所有的.cs文件中都可以使用#if AA public class A() #else public class B();
  A:可以。在VS 2005的解决方案资源管理器中,用鼠标右键单击项目,选择其属性。在属性对话框的Build页中,可以找到conditional compilation symbol,在其中输入AA,即可在该项目的所有C#源代码文件中使用这个符号。
3、Q:可以将Smartphone应用程序转换为Pocket PC应用程序吗?
  A:可以。在.NET Compact Framework 2.0中,只要您没有用到某些特殊的API,Pocket PC应用程序与Smartphone程序是可以互相转换的,只需要在控件上做些调整即可。
4、Q:.Net Framework 2.0有没有对Media coder/decoder的支持?开发第三方的媒体播放程序可以不依赖.Net CF2.0吗?
  A:.NET Compact Framework 2.0本身可以开发Direct3D Mobile的应用程序。也可以在VS 2005中以C++开发Native Code的媒体播放程序,而无须依赖.NET Compact Framework 2.0。
5、Q:使用.Net开发的智能设备程序是否比用C语言开发的程序效率低很多?
  A:使用.NET开发的程序会比使用C语言开发的本地程序要慢一些,不过对于一般的应用软件来说,下率不会差太多,除非是需要实时处理硬件或I/O的程序,必须要使用C语言进行开发之外,一般的应用程序用.NET Compact Framework开发即可,因为这样可以获得最好的灵活性和可移植性。
6、Q:用托管C++开发的应用程序执行效率会不会比用C#开发的应用程序高?
  A:不会。由於托管C++与C#源代码在经过编译之后,都将成为IL代码,由.NET Compact Framework来执行,因此在效率上不会有差别。
7、Q:请问.NET Compact Framework 2.0对于使用不同CPU的移动设备支持好吗?.NET Compact Framework 2.0在GSM应用方面有没有增强?
  A:.NET Compact Framework具有Windows Mobile跨平台的特性,因此开发时不需要考虑底层的OS、CPU和其它硬件因素。目前.NET Compact Framework对常见的CPU都能够支持,例如ARM、MIPS、SH、x86等。另外在GSM应用方面,主要针对Smartphone的应用作了加强。
8、Q:请问MFC在Windows Mobile Development中处于什么地位?Douglas Boling写的Programming Microsoft Windows CE .NET一书中好像并不推崇使用MFC开发Windows Mobile应用程序。
  A:MFC还是以本地C++的方式进行开发,其特点是执行效率高,但必须花费更多的心思在資源分配、回收等编程技巧上。如果使用.NET Compact Framework进行开发,虽然执行效率比本地程序略差,但整体而言,可移植性与灵活性都较好,而且不必为回收资源担心,开发者能够专注于真正重要的业务逻辑流程。
9、Q:.NET Compact Framework 2.0与1.0有什么区别?
  A:.NET Compact Framework 2.0主要针对1.0原有的控件及类库进行了改善,提供了更多的支持,并新增了许多类型和控件,.NET Compact Framework 2.0更加接近.NET Framework,同时在效率上也相对1.0有所提升。
10、Q:在制作安装程序的时候,如何在start->program菜单中生成程序的快捷方式?
  A:在VS 2005中建立Smart Device Cab Project,在File System页面中,可以看到Application Folder,这就是Start->Program的位置,可以先建立Primary Output的快捷方式,然后将此快捷方式移到Programs Folder,并构建Cab文件即可。
11、Q:移动设备与WEB网页设计有什么主要区别?
  A:Visual Studio开发环境中移动设备与Web设计是非常类似的 ,可以使用同样的语言进行设计, 不同的只是能够使用的类以及控件有所区别。
12、Q:.NET Compact Framework中可以实现鼠标的双击、右击、中间键单击等用户事件吗?
  A:运行Windows Mobile的设备没有鼠标,所以这些事件也不存在。对于常用的右键弹出上下文相关菜单,在触摸屏上一般用单击并且按住一段时间来实现。
13、Q:Mobile应用程序的界面处理可以使用CSS样式表吗?
  A:不可以。
14、Q:Smartphone上面能够支持横屏幕吗?
  A:不支持。
15、Q:如何在Pocket PC中调整控件的位置使得应用程序可以支持横向屏幕?
  A:可通过设置控件的Anchor和Dock属性来自适应屏幕。
16、Q:界面开发完成后,在移植方面需要注意些什么?
   A:一般来说,要移植到不同平台上必需要重新设计用户界面;可以重用的只是业务逻辑,不是用户界面。
17、Q:我在移动开发过程中用到了很多控件,难以在一页之内显示,如何为它们添加一个滚动条?
  A:可以将这些控件放到一个Panel中,并设置其AutoScroll属性为true即可;如果使用VS2005,拖拽数据源到窗体上时,会自动将所有控件包括在一个Panel里。
18、Q:TableAdapter在.NET Compact Framework 1.0中从未出现过,是新特性吗?
  A:是的,TableAdapter是.NET Compact Framework 2.0中新增加的。
19、Q:SQL Mobile带有像SQL Server那样企业管理器吗?Visual Studio 2005支持在桌面上直接查看SQL Mobile的数据库吗?
  A:您可以通过SQL Server 2005的企业管理器连接到SQL Mobile数据库进行编辑。Visual Studio 2005也支持在桌面上创建或修改SQL Mobile数据库文件。
20、Q:提交成功后如何取消保存?
  A:目前BindingSource尚不支持事务,因此提交成功后是没有办法再undo的。
21、Q:移动设备内存较小,填充DataSet是否有大小限制?
  A:DataSet在逻辑上并没有对大小的限制。但是DataSet的大小必须小于当前前的可用内存,否则会有内存分配不成功的异常出现。
22、Q:如果数据源中的数据在显示前需要处理(例如格式转换),可以使用DataBinging吗?
  A:BindingSource是直接将DataSet与控件进行关联,所以如果需要进行其他操作的话,就不能使用BindingSource。或者,可以在访问数据库后,先在DataSet里对需要转换的数据进行必要的处理之后,再进行显示。
23、Q:DataSet实际上在内存中产生了一套数据副本,如何解决版本控制的问题?
  A:DataSet本身不存在版本控制的问题。在把数据提交回SQL Mobile的时候,的确需要有一些机制来保证修改完成的数据应该是最新的,但是DataSet本身的数据结构是不会发生变化的。
24、Q:能否通过Pocket PC上的程序更新服务器上的数据库信息?
  A:可以。可以使用SQL Mobile中的RDA或者是合并复制的方法和远程SQL Server数据库进行数据同步或更新。具体的实现可以参考SQL Server相关部分的文档。
25、Q:SQL Mobile一定要要安装在移动设备上吗?
  A:是的。SQL Mobile需要安装在Windows Mobile或者Windows CE设备上。
26、Q:SQL Moble支持存储过程吗?
  A:目前还不支持。
27、Q:SQL Mobile必须和应用程序部署在同一台设备上吗?可否远程连接?它是否是一个文本数据库?
 
  A:是的。SQL Mobile必须和应用程序部署在同一个设备上,现在还不支持远程连接。SQL Mobile是一个文件数据库,但不是一个文本数据库。
28、Q:能不能在一些应用中以XML替代SQL的作用?
  A:可以的。XML的查询效率比SQL Mobile要低,但是在数据比较少的情况下不需要安装更多的组件,这是XML的一个优势。
29、Q: Tableadapter与DataAdapter之间有何区别?DataAdapter是多个TableAdapter的组合吗?
  A:不是的,TableAdapter是对DataAdapter的一个扩展,TableAdapter本身包括了对应数据表的信息。TableAdapter完成从数据库连接、执行SQL语句到将结果填充到DataSet中的一个完整操作,而DataAdapter只支持数据填充的操作。
30、Q:做了SQL Moblie的sdf文件后,Publications后的数据库表中会出现msrepl_tran_version或rowguid字段,这是为什么?
  A:这两个字段是为了保证数据同步,由系统自动添加的,请不要进行修改。
31、Q:网上出了个Reflector反编译工具,可以99%反编译用C#开发的EXE和DLL,怎么才能更好地保护应用程序?
  A:目前大部分应用程序采用混淆和对关键字符串加密的方式,更好的方式可能还要继续探讨。



 


原创粉丝点击