Android 如何减少从一项活动切换到另一项活动的时间?

Android 如何减少从一项活动切换到另一项活动的时间?,android,user-interface,Android,User Interface,我们的团队开发了这个应用程序,它可以向家庭成员发送带有坐标(纬度、经度)的SOS。基本上,我们正在做的是访问联系人列表,在列表中添加一些联系人,以便向其发送短信。 我们需要的是一种减少所花时间的技术,即从一个活动切换到另一个活动,从而使UI平滑。 谢谢 或 你可以创建一个样式 <style name="noAnimTheme" parent="android:Theme"> <item name="android:windowAnimationStyle">@nul

我们的团队开发了这个应用程序,它可以向家庭成员发送带有坐标(纬度、经度)的SOS。基本上,我们正在做的是访问联系人列表,在列表中添加一些联系人,以便向其发送短信。 我们需要的是一种减少所花时间的技术,即从一个活动切换到另一个活动,从而使UI平滑。 谢谢

或 你可以创建一个样式

<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所建议的,您还可以删除默认的活动转换。

Add
overridePendingTransition(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();
 }