【问题标题】:My app runs smoothly on high-end devices like (Oneplus 3) but crashes in low-end devices我的应用在(一加 3)等高端设备上运行流畅,但在低端设备上崩溃
【发布时间】:2018-01-28 20:38:18
【问题描述】:

我的应用在 (Oneplus 3) 等高端设备上运行流畅,但在低端设备上崩溃。试图降低图像的分辨率,删除列表视图,但崩溃仍在继续。发布错误日志以及我的 XML。我认为这个xml文件中的错误与其他文件没有问题。我是安卓新手。 .请帮帮我。

01-29 01:51:39.252 22876-22876/com.instagram.satyajit.instagramclone 
E/AndroidRuntime: Exception
01-29 01:51:39.282 22876-22876/com.instagram.satyajit.instagramclone     E/AndroidRuntime: FATAL EXCEPTION: main
 Process: com.instagram.satyajit.instagramclone, PID: 22876
 android.view.InflateException: Binary XML file line #0: Error inflating class <unknown>
   at android.view.LayoutInflater.createView(LayoutInflater.java:620)
   at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
   at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
   at com.instagram.satyajit.instagramclone.HomeFragments.Home.onCreateView(Home.java:45)
   at android.support.v4.app.Fragment.performCreateView(Fragment.java:2354)
   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1419)
   at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1740)
   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1809)
   at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:799)
   at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2580)
   at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2367)
   at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2322)
   at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:2199)
   at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:651)
   at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:145)
   at android.support.v4.view.ViewPager.populate(ViewPager.java:1236)
   at android.support.v4.view.ViewPager.populate(ViewPager.java:1084)
   at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1614)
   at android.view.View.measure(View.java:16653)
   at android.widget.LinearLayout.measureVertical(LinearLayout.java:847)
   at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
   at android.view.View.measure(View.java:16653)
   at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1630)
   at android.view.View.measure(View.java:16653)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5131)
   at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
   at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
   at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
   at android.view.View.measure(View.java:16653)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5131)
   at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
   at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139)
   at android.view.View.measure(View.java:16653)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5131)
   at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
   at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
   at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
   at android.view.View.measure(View.java:16653)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5131)
   at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
   at android.view.View.measure(View.java:16653)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5131)
   at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
   at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
   at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
   at android.view.View.measure(View.java:16653)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5131)
   at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
   at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2295)
   at android.view.View.measure(View.java:16653)
at android.vi
01-29 01:51:49.872 22876-22876/com.instagram.satyajit.instagramclone I/Process: Sending signal. PID: 22876 SIG: 9

主页.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <android.support.v7.widget.Toolbar
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="horizontal"
                android:layout_marginRight="12dp"
                android:gravity="center">

                <ImageView
                    android:layout_width="0dp"
                    android:layout_height="40dp"
                    android:layout_weight="0.50"
                    android:src="@drawable/ic_camera" />
                <ImageView
                    android:layout_width="0dp"
                    android:layout_height="40dp"
                    android:layout_weight="4"
                    android:src="@drawable/instawrittenlogo"/>
                <ImageView
                    android:layout_width="0dp"
                    android:layout_height="40dp"
                    android:layout_weight="0.50"
                    android:src="@drawable/ic_near_me_black_24dp"/>
            </LinearLayout>

        </android.support.v7.widget.Toolbar>
    </android.support.design.widget.AppBarLayout>

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@drawable/bottom_shadow" />

    <ListView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="9"
        android:id="@+id/listView"></ListView>


</LinearLayout>

【问题讨论】:

  • 您的堆栈跟踪应该有更多内容,包括一系列“由”部分。
  • 就是这样......我的堆栈中没有部分原因:(
  • 您是否尝试使用百分比设置图像宽度?
  • 有,你把它剪掉。它说它正在发送一个信号,但你没有复制那部分。

标签: android performance android-layout user-interface


【解决方案1】:

听起来像是内存问题或低版本的兼容性

使用记忆工具,例如 谷歌浏览器内存快照 adb shell dumpsys meminfo com.example.appname

为了兼容性,您可以尝试降低 gradle 中的 sdk 版本

【讨论】:

    【解决方案2】:

    您的应用使用了多少内存?每个设备都有自己的最大允许内存,正在运行的应用程序可以使用。您可以使用以下代码行来检查您正在运行的特定设备的最大限制是多少。由于显而易见的原因,旧设备的这个数字较低,而新设备的这个数字较高。

    Runtime rt = Runtime.getRuntime();
    long maxMemory = rt.maxMemory();
    Log.i("Android", "maxMemory:" + Long.toString(maxMemory / 1000000) + "Mb");
    

    这将返回您的应用可以使用的最大 RAM 量(以 MB 为单位)。然后,您可以轻松地将这个数字与 Android Studio 的 Android Profiler 部分中看到的数字进行比较。从那里你应该能够找出问题所在。

    【讨论】:

      猜你喜欢
      • 2022-01-17
      • 1970-01-01
      • 2021-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多