0

我在父活动中有一个列表视图,我正在将一些参数从父屏幕传递给子活动。我还有自定义主题和标题栏。我的问题是当我从父列表视图转到子视图屏幕时,它需要很长时间并且黑色屏幕来了一会儿。是什么原因,我该如何避免?

我在谷歌搜索了一下,也看到了一个原因,但它对我不起作用。

有谁能够帮助我?

4

2 回答 2

2

根据描述,您有处理问题,而不是显示问题。您需要确定需要太长时间才能完成的例程。如果没有看到处理代码,很难推荐解决方案。

以下几点可能会有所帮助:您是在真实设备上运行应用程序还是使用模拟器?- 模拟器是出了名的慢。尝试在真实设备上运行它。

您是否在 UI 线程上访问在线资源,例如网站或 Web 服务?所有在线访问都应在专用线程上运行。

您的处理在哪里进行?不要在 ListView 的 onClick 中做多余的处理,因为它会在 UI 线程上运行。仅在新 Activity 的 onCreate 方法中放置 MINIMAL 处理,因为它也在 UI 线程上运行。放置冗长处理的最佳位置是在新 Activity 的 onResume 方法中(这仍然在 UI 线程上运行),并且理想情况下将处理传递给另一个线程。

您正在访问本地 SQLite 数据库吗?如果是这样,您的 SQL 语句和/或数据库可能没有针对性能进行优化。如果您使用的是本地数据库并且不是强大的 SQL 程序员,请让某人查看您的语句或将它们张贴在这里。

您的应用程序是否使用大量内存,例如加载到内存中的大型数组或图像?如果是这样,请减少内存需求 - 只保留您在任何时候必须拥有的内存。

如果这些都没有帮助,请发布您在 ListView 的 onClick 到您准备好接受其他用户输入之间进行的处理的详细描述。

于 2012-12-11T12:46:52.117 回答
1

当您到达下一个屏幕时,请将您的处理任务放入线程中(在 OnCreate() 中)并显示等待的进度对话框。

编辑 -在活动中尝试这个主题,让我知道发生了什么。

@android:style/Theme.Translucent.NoTitleBar
于 2012-12-11T09:08:50.460 回答