Android 如何减少从一项活动切换到另一项活动的时间?
我们的团队开发了这个应用程序,它可以向家庭成员发送带有坐标(纬度、经度)的SOS。基本上,我们正在做的是访问联系人列表,在列表中添加一些联系人,以便向其发送短信。 我们需要的是一种减少所花时间的技术,即从一个活动切换到另一个活动,从而使UI平滑。 谢谢 或 你可以创建一个样式Android 如何减少从一项活动切换到另一项活动的时间?,android,user-interface,Android,User Interface,我们的团队开发了这个应用程序,它可以向家庭成员发送带有坐标(纬度、经度)的SOS。基本上,我们正在做的是访问联系人列表,在列表中添加一些联系人,以便向其发送短信。 我们需要的是一种减少所花时间的技术,即从一个活动切换到另一个活动,从而使UI平滑。 谢谢 或 你可以创建一个样式 <style name="noAnimTheme" parent="android:Theme"> <item name="android:windowAnimationStyle">@nul
<style name="noAnimTheme" parent="android:Theme">
<item name="android:windowAnimationStyle">@null</item>
</style>
@空的
并将其设置为清单中活动的主题:
<activity android:name=".ui.ArticlesActivity" android:theme="@style/noAnimTheme">
</activity>
活动之间的切换通常是平稳的。如果它不是平滑的,这可能是由于UI线程上的一些繁重操作造成的。人眼可以检测到超过200毫秒的延迟。因此,您需要找出在处理过程中花费更多时间的地方
Android为相同的应用程序提供了Strictmode功能
来自android文档
StrictMode是一个开发工具,它可以检测您可能正在做的事情
这是一次意外,它会引起您的注意,以便您可以修复它们
StrictMode最常用于捕获意外磁盘或网络
访问应用程序的主线程,其中包含UI操作
接收并播放动画。保存磁盘和网络
脱离主线程的操作会使操作更加平滑、更容易执行
响应性应用程序。通过保持应用程序的主线程
响应,您还可以防止ANR对话框显示给用户
你可以找到
示例代码
public void onCreate() {
if (DEVELOPER_MODE) {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork() // or .detectAll() for all detectable problems
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());
}
super.onCreate();
}
除此之外,正如Nadeem所建议的,您还可以删除默认的活动转换。AddoverridePendingTransition(0,0)代码>在活动的onCreate
方法上设置内容视图之前
public void onCreate() {
if (DEVELOPER_MODE) {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork() // or .detectAll() for all detectable problems
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());
}
super.onCreate();
}