Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何减少活动的加载时间?_Android_Xml_Performance_Android Activity - Fatal编程技术网

Android 如何减少活动的加载时间?

Android 如何减少活动的加载时间?,android,xml,performance,android-activity,Android,Xml,Performance,Android Activity,我在活动的onCreate中进行以下操作 if(满足条件){ setImage(传递视图以调整大小); 设置可见性(View.VISIBLE); } 其他的 imageview.setVisibility(视图.不可见); 如下所示调整大小 Bitmap bmSource=BitmapFactory.decodeResource(context.getResources(),res); 位图缩略图; bmThumbnail=getResizedBitmap(bmSource,getScreen

我在活动的onCreate中进行以下操作

if(满足条件){
setImage(传递视图以调整大小);
设置可见性(View.VISIBLE);
}
其他的
imageview.setVisibility(视图.不可见);
如下所示调整大小

Bitmap bmSource=BitmapFactory.decodeResource(context.getResources(),res);
位图缩略图;
bmThumbnail=getResizedBitmap(bmSource,getScreenWidth()/x,(getScreenWidth()/y));
Drawable Drawable=新的BitmapDrawable(context.getResources(),bmThumbnail);
b、 立根台(可拉深);
在这段代码中我提到了一个视图,但在实际代码中我有多个视图 这项活动(视为一项活动)如下所示:

  • 呼出电话屏幕
  • 呼出呼叫连接屏幕
  • 来电连接屏幕
  • 因此,我正在根据这一点改变活动。为通话所需的扬声器、静音、录音等使用图像

  • 传出呼叫和呼叫连接屏幕
  • a) 正在进行更改以显示传出呼叫

    b) 一旦收到来自其他人的呼叫接受,立即对呼叫连接屏幕进行屏幕更改

    c) 一旦屏幕更改完成,计时器将启动呼叫

  • 来电已接通
  • a) 用于显示不同活动使用的来电屏幕

    b) 一旦用户接受呼叫,则转到活动A

    c) 所以在活动A中,首先要做一些图像设置。一旦我得到了接受的响应,连接呼叫屏幕的图像更改将完成

    这就是整个过程。现在我来解释一下这个问题

    我已经提到,在这两种情况下,呼叫连接屏幕的更改将在活动A中完成。 在第一种情况下,由于已经在同一屏幕初始图像设置将加载之前,一旦得到响应,然后改变呼叫连接屏幕将完成。计时器将启动。没问题

    问题是, 接听来电时,它将转到活动A和初始图像设置。一旦收到接受响应,屏幕将切换为呼叫连接屏幕,计时器启动。在这里加载初始图像设置需要时间。因此,计时器启动延迟一秒会导致人员A和人员B的时间不同

    并非所有设备都会出现此问题。在Android版本8中,我遇到了上述版本中没有的问题

    我所说的初始图像设置是指设置ImageView的可见性和设置图像

    我所尝试的, 毕加索没有使用位图,而是用它来调整图像大小和设置图像。这样我就可以减少0.20到0.25秒。但图像扩展不恰当。在上面的例子中,奥利奥也减少了0.x秒。但也没有解决问题

    同样在日志中,我也看到了这一点

    PowerKeeper.Event: notifyActivityLaunchTime: com.package.ex/com.package.ExampleActivity totalTime: 1200
    
    上面提到的1200毫秒用于启动我的活动??有时是12121400

    我的应用程序在O以上的情况下工作得很好。但oreo和O以下的应用程序需要一些时间才能加载,这会影响通话持续时间。真的很糟糕。那我该怎么办

    那么,如何减少在活动中进行UI更改所花费的时间

    如果有人在阅读我的整个问题时遇到困难,请看下面的简短说明。

    <强>简短地解释:考虑你正在使用一个呼叫应用程序(你的设备是ORIO或低于ORIO)。你收到一个来电。你点击答案。成功连接后将更改屏幕。如果在另一端的人比你先拿到屏幕的时候,你需要一些时间来加载屏幕怎么办?您和其他人的通话时间将不同。这就是我的问题

    注意:仅在oreo及以下版本中面临此问题。

    下面是我的活动A布局(用作呼叫连接屏幕和传出呼叫屏幕)

    
    

    请任何人帮帮我。。。分享一些解决此问题的想法…提前感谢

    我有一些建议:

  • 使用
    ConstraintLayout
    ,您的xml文件包含许多视图,您正在使用
    RelativeLayout
    LinearLayout
    ,并且这些视图以嵌套方式使用,因此这种布局嵌套可能会影响性能
  • 另一件事是在使用ConstraintLayout时,您应该使用
    layout\u constraintDimensionRatio
    根据要加载的图像的纵横比设置图像视图的高度或宽度。 一个是你需要固定高度或宽度,另一个是通过纵横比来计算的
  • 我只是在分享
    ImageView
    code的一部分,它是这样的:

    
    
    注意:
    app:layout\u constraintDimensionRatio=“H,16:9”

    另外,使用glide加载图像

  • 您应该使用fragment,而不是启动一个新的活动,我们已经看到片段加载比启动一个新活动更快

  • 尝试上述方法,如果问题仍然存在,请告诉我。

    请分享您的活动xml(您正面临此问题)@Suraj Vaishnav肯定会在几分钟内与您分享minutes@SurajVaishnav添加了xml代码..请看一下,你使用的是像.png这样的像素图像吗?也许你可以用矢量图像代替一些。这将有助于文件大小和缩放。如果你需要使用普通图像,谷歌搜索“mipmap”。mipmap文件夹包含不同分辨率的相同图像,Android将根据屏幕大小选择合适的图像,从而减少加载时间
    <androidx.constraintlayout.widget.ConstraintLayout
            
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
        <ImageView
            
            android:layout_width="0dp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintDimensionRatio="H,16:9"  
            android:layout_height="0dp"> </androidx.constraintlayout.widget.ConstraintLayout>