我的Android应用有7个片段类;一个带有WebView,一个带有在SurfaceView上显示的摄像头,一个带有谷歌地图,另一个带有包含图像和文本的ListView。
每个Fragment有大约15个公共静态类变量。这是不好的编程吗?
似乎我的应用程序相当慢,我想知道是否与拥有这么多公共静态类变量有关。
有关如何加速我的Android应用的任何提示?如果我将这些公共类变量中的许多变为方法和函数而不是将它们作为类变量,它会对速度有多大的改进吗?
提前致谢。
答案 0 :(得分:2)
每个Fragment有大约15个公共静态类变量。这是不好的编程吗?
可能。如果这是传统的Java开发,那么你可能因为拥有那么多static
字段而受到抨击。在Android中,我们更多地使用位。任何阶级都是过分的;我希望片段为零。
但是,为了澄清,根据Gabe对您的问题的评论,我指的是普通static
字段,而不是常量(例如static final int
,static final String
)。常量是典型的,合理的,几乎肯定不是性能问题。
似乎我的应用程序相当慢,我想知道它是否与拥有如此多的公共静态类变量有关。
可能不是。
有关如何加速我的Android应用的任何提示?
首先要弄清楚具体你慢的地方。无论是通过简单的Log
语句(通过您的应用跟踪您的进度),还是通过Android Studio方法跟踪或其他方式,都取决于您。
答案 1 :(得分:1)
要考虑优化的要点
1 - 在你的应用中我可以看到你有7个片段。问题是,是否所有7个片段同时加载,或者您是否拥有动态片段管理器以在需要时处理所有数据/视图创建。如果您同时加载和创建所有片段,当然,这不是最佳方式。始终在需要时创建视图并加载数据。保留动态数据,这些数据对于App流来说是非常历史和必要的。
2 - 拥有静态类编程并不错,但制作不必要的静态类是非常糟糕的编程。确定您认为非静态的类,将其转换为非静态并进一步优化。
3 - 你可能觉得应用程序很慢但可能背后有非技术原因。检查您用于运行此应用程序的设备,平台和配置。
4 - 识别持有和阻止UI响应的数据处理,创建asyncTask / thread以在后台处理此类数据处理。尝试尽可能使用延迟加载。使用静态支架创建自定义适配器,以实现完美的UI。
5 - 如果您认为UI没有响应,您可以考虑实施多种模式,如回收适配器,责任链,委托,观察员等。
6 - 在设计UI时,请确保使用的是最佳布局,而不是在同一个xml中使用多级和多层次布局。
答案 2 :(得分:0)
你可以添加这个
android:hardwareAccelerated="true"
AndroidManifest中的应用程序标记上的。希望这很有帮助