如何提高一款界面客户端软件操作的流畅度

来源:互联网 发布:华为手机人工智能在哪 编辑:程序博客网 时间:2024/06/05 11:53

  个人也做过好长时间的界面开发,能实现各种漂亮的Or繁琐的界面,自认为水平还不错大笑、、、这里就说个人的几点经验吧。

如果对于一款大型的客户端软件,好吧,就拿eclipse说吧。eclipse的启动速度大家都知道,非常慢,一个进度条读了半天。如果没有那个进度条,用户多半快等的崩溃了。eclipse它加载了那么多东西,实际我们程序员用到的功能点只有几个,许多功能模块用不到也给加载了,这就不应该了。这就涉及到我说的第一点:用不到的东西就不要去初始化。这点office做的很好:上面一排菜单(开始、插入、页面布局等等),点第一下的时候会楞个1s左右,这1s就是初始化所点的菜单界面再显示出来,之后再点就没有延迟了。

第一点其实是个正常的程序员都知道,但是做到就不一定了,个人认为做到这点非常难。这点,大能到每个工具栏菜单,小能到每个tabpane,都要实现。如果从界面程序的整体架构考虑,作用奇大。

第二点:一个大的应用程序,肯定有一些重复的大的组件。所以呢,要考虑这些组件能不能用一个实例?用单例有个好处,对于那些启动时必须初始化的单例,可以用多线程在后台执行。初始化结束后,任何时候随叫随到,没有任何延迟。唯一要考虑的就是单例驻留内存时间。

第三点:不知道大家觉得界面程序初始化时,哪些基本操作是最耗时最耗资源的?是初始化一个label,还是读取一个图片,或者布局,还是组件paint时耗时?个人认为,还是读取图片最耗时。这是我调试多款软件得出的结论、、、那么如何提高处理图片的效率呢?个人解决方法是:应该建立一个公有图片缓存,避免相同图片读取两次。同时,界面程序一开始执行时,就应该后台多线程预先读取启动时必要的图片。这样要用到的图片可以直接缓存取。

第四点:不要因为操作数据,导致界面卡死、、、比如说:可能你的界面要显示从服务器获取的新闻,那么应该后台获取服务器新闻,前台的界面显示诸如“正在加载”的字样,等数据获取完成后,前台再显示获取的新闻。

第五点:多用多线程。多线程是处理界面的利器,能够保证组件的事件派遣线程不被卡死。在多线程的基础上,可以实现各种复杂的效果,非常值得考虑。

暂时就这么多吧、、、