Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.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 listview在同一种设备上表现不同_Android_Android Listview_Scroll_Android Viewholder - Fatal编程技术网

Android listview在同一种设备上表现不同

Android listview在同一种设备上表现不同,android,android-listview,scroll,android-viewholder,Android,Android Listview,Scroll,Android Viewholder,我正在与一个让我发疯的问题斗争: 我有一个非常简单的ListView,它在一个设备上平滑滚动,在另一个设备上非常笨拙,几乎100%相同 您可以找到一个长卷轴的视频,也可以找到一个(几乎)平滑滚动的视频 慢速滚动发生在具有规格的设备上,平滑滚动发生在具有规格的设备上 这是我使用的最基本的代码(显然是使用ViewHolder模式),怎么可能呢??请有人帮帮我 public DealerAdapter(Context context, int skinLayoutResourceId, ArrayLi

我正在与一个让我发疯的问题斗争: 我有一个非常简单的ListView,它在一个设备上平滑滚动,在另一个设备上非常笨拙,几乎100%相同

您可以找到一个长卷轴的视频,也可以找到一个(几乎)平滑滚动的视频

慢速滚动发生在具有规格的设备上,平滑滚动发生在具有规格的设备上

这是我使用的最基本的代码(显然是使用ViewHolder模式),怎么可能呢??请有人帮帮我

public DealerAdapter(Context context, int skinLayoutResourceId, ArrayList<Dealer> items) {
        super(context, skinLayoutResourceId, items);
        _items = items;
        mContext = context;
        layout = skinLayoutResourceId;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        DealerViewHolder holder = null;
        // reuse views
        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(layout, null);
            // configure view holder
            holder = new DealerViewHolder();
            holder.lblName = (TextView) convertView.findViewById(R.skinDealer.lblNameSurname);
            holder.lblSapCode = (TextView) convertView.findViewById(R.skinDealer.lblSapCode);
            holder.lblAddress = (TextView) convertView.findViewById(R.skinDealer.lblAddress);
            convertView.setTag(holder);
        } else
            holder = (DealerViewHolder) convertView.getTag();
        try {
            holder.lblName.setText(_items.get(position).getName());
            holder.lblCode.setText(_items.get(position).getCode());
            holder.lblAddress.setText(_items.get(position).getAddress());
        } catch (Exception e) {
            // TODO: handle exception
        }
        return convertView;
    }

    static class DealerViewHolder {
        TextView lblName;
        TextView lblAddress;
        TextView lblCode;
    }

我所看到的设备之间唯一的区别是Android版本。安卓4.4引入了一些变化,以使整个系统更加平滑,即使在内存较低的设备中也是如此

这里有更多详细信息:


这可能没有多大帮助,但如果版本是唯一的区别,那可能就是这样。

经过几周的调查,原因是难以置信的:问题是由布局根目录上包含太大(几乎2MB)的listview的背景图像引起的。虽然我知道使用大图像作为背景不是一个好的做法,但我真的不明白为什么在高性能设备上这会导致问题,而在性能较差的设备上,一切都运行得很好


顺便说一句,我希望这能帮助任何有我同样问题的人

速度慢的设备是否在后台有可能导致设备速度慢的应用程序?我不这么认为,速度慢只会发生在我的应用程序上:(看不到任何会减慢速度的东西,可能是由其他代码引起的。@Ranjith如果是这样,它也会影响其他设备,不是吗?可以在滚动时添加一些日志吗?有一些日志以GC_FOR_ALLOC开始?有时,在新设备中,分辨率和RAM不能按比例扩展,导致内存问题。我最近在一个应用程序中遇到了一些这样的问题,这个应用程序在一个非常旧的三星上运行得很好,但在一个新的Nexus 5上运行得很慢。我在滚动时添加了logcat日志的问题。你是如何解决你的问题的?嗯,我的问题有点不同。我有几层可绘制的,解决方案是找到一些方法来统一它们。在y中我们的logcat我看不到太多可以使用的东西,请确保您的日志级别是Debug或Verbose,并且您有一个应用程序过滤器,并且您只显示与您的应用程序直接相关的日志。但这可能不是同一种问题。
01-27 10:34:59.994: V/AlarmManager(2371): waitForAlarm result :8
01-27 10:35:00.004: D/KeyguardClockWidgetService(4910): onReceive action=android.intent.action.TIME_TICK
01-27 10:35:00.004: V/AlarmManager(2371): ClockReceiver onReceive() ACTION_TIME_TICK
01-27 10:35:00.034: D/IconMerger(2561): overflowShown = false
01-27 10:35:00.034: D/IconMerger(2561): moreRequired = false
01-27 10:35:00.094: I/WAKELOCK_RELEASE(2371): TIMESTAMP=3927849415108, TAG=AlarmManager, TYPE=PARTIAL_WAKE_LOCK             , COUNT=0, PID=2371, UID=1000
01-27 10:35:00.474: I/InputReader(2371): Touch event's action is 0x0 (deviceType=0) [pCnt=1, s=0.146 ] when=3598409874000
01-27 10:35:00.474: I/InputDispatcher(2371): Delivering touch to: action: 0x0
01-27 10:35:00.494: I/ThermalZone(2371): TEMP 41000 newMaxSensorState 0
01-27 10:35:00.504: I/CustomFrequencyManager(4461): newFrequencyRequest  - mFrequency = 800000, mTimeoutMs = -1, mPkgName = LIST_SCROLL_BOOSTER@3
01-27 10:35:00.504: I/CustomFrequencyManager(4461): Boost Request from package = LIST_SCROLL_BOOSTER@3 frequency : 800000type = 6
01-27 10:35:00.504: I/CustomFrequencyManager(4461): !! pkgName = LIST_SCROLL_BOOSTER@3
01-27 10:35:00.504: I/CustomFrequencyManager(4461): Request from package name pkgName = LIST_SCROLL_BOOSTER@3
01-27 10:35:00.504: I/CustomFrequencyManager(4461): mContext is Not Null  mContext.pkgName = com.reply.fasttrack
01-27 10:35:00.504: I/CustomFrequencyManager(4461): mToken is Null....Creating New Binder!
01-27 10:35:00.504: I/CustomFrequencyManager(4461): CPUDVFSControlRequest : doFrequencyRequest::  = 800000 Timeout : -1
01-27 10:35:00.504: I/power(2371): *** acquire_dvfs_lock : lockType : 1  freq : 800000 
01-27 10:35:00.504: D/CustomFrequencyManagerService(2371): acquireDVFSLockLocked : type : DVFS_MIN_LIMIT  frequency : 800000  uid : 10169  pid : 4461  pkgName : LIST_SCROLL_BOOSTER@3
01-27 10:35:00.614: I/InputReader(2371): Touch event's action is 0x1 (deviceType=0) [pCnt=1, s=] when=3598555846000
01-27 10:35:00.614: I/InputDispatcher(2371): Delivering touch to: action: 0x1
01-27 10:35:01.984: I/Monitor(2371): SIOP:: Current AP = 365, CP = 0
01-27 10:35:03.354: D/BatteryService(2371): update start
01-27 10:35:03.354: D/BatteryService(2371): level:21, scale:100, status:3, health:2, present:true, voltage: 3614, temperature: 319, technology: Li-ion, AC powered:false, USB powered:true, Wireless powered:false, icon:17303346, invalid charger:0, online:4, charge type:1, current avg:-368
01-27 10:35:03.354: D/BatteryService(2371): Sending ACTION_BATTERY_CHANGED.
01-27 10:35:03.364: D/STATUSBAR-BatteryController(2561): onReceive() - ACTION_BATTERY_CHANGED
01-27 10:35:03.364: D/STATUSBAR-BatteryController(2561): onReceive() - BATTERY_STATUS_DISCHARGING: tw_stat_sys_battery_usb_not_charge
01-27 10:35:03.364: D/STATUSBAR-PhoneStatusBar(2561):  mBrightnessEnablebySettings = true mBrightnessEnablebyBattery = true mBrightnessEnablebyDisableFlag = true
01-27 10:35:03.514: I/power(2371): *** release_dvfs_lock : lockType : 1 
01-27 10:35:03.514: D/CustomFrequencyManagerService(2371): releaseDVFSLockLocked : Getting Lock type frm List : DVFS_MIN_LIMIT  frequency : 800000  uid : 10169  pid : 4461  tag : LIST_SCROLL_BOOSTER@3