【发布时间】:2016-06-15 11:32:41
【问题描述】:
我正在使用 GraphView 库。我正在通过一些第三方设备通过蓝牙绘制实时图表。
它每秒连续发送 50 个样本。 我需要连续绘制它。
但是,无论屏幕大小如何,我都需要在屏幕上显示大约 360 个样本。
为此我的代码如下:
class MyHandler extends Handler {
private final WeakReference<HomeScreenActivity> mActivity;
private MyHandler(HomeScreenActivity activity) {
mActivity = new WeakReference<HomeScreenActivity>(activity);
}
/**
* Method handleMessage.
*
* @param msg android.os.Message
*/
public void handleMessage(android.os.Message msg) {
final HomeScreenActivity parent = mActivity.get();
Logger.log(Level.DEBUG, "HomeScreenActivity", "msg.what=" + msg.what);
if (msg.what == Constants.PLETHY_1000) {
String str = (String) msg.obj;
final String[] arr = str.replace("[", "").replace("]", "").split(",");
for (int i = 0; i < arr.length; i++) {
mSeries2.appendData(new DataPoint(graph2LastXValue, Double.parseDouble(arr[i])), true,360);// change 360 to 40 and works fine
graph2LastXValue++;
}
}
}
它适用于某些安卓设备 但我的应用程序在其他设备上运行 2 分钟或 3 分钟后崩溃。
我的 logcat 会出错:
06-13 10:30:42.012 31412-31452/bpl.com.bpl.com.bploximeterdemo W/Adreno-GSL: <sharedmem_gpumem_alloc_id:1554>: sharedmem_gpumem_alloc: mmap failed errno 12 Out of memory
06-13 10:30:42.012 31412-31452/bpl.com.bpl.com.bploximeterdemo E/Adreno-GSL: <gsl_memory_alloc_pure:1500>: GSL MEM ERROR: kgsl_sharedmem_alloc ioctl failed.
06-13 10:30:42.022 31412-31452/bpl.com.bpl.com.bploximeterdemo W/Adreno-GSL: <sharedmem_gpumem_alloc_id:1554>: sharedmem_gpumem_alloc: mmap failed errno 12 Out of memory
06-13 10:30:42.022 31412-31452/bpl.com.bpl.com.bploximeterdemo E/Adreno-GSL: <gsl_memory_alloc_pure:1500>: GSL MEM ERROR: kgsl_sharedmem_alloc ioctl failed.
06-13 10:30:42.022 31412-31452/bpl.com.bpl.com.bploximeterdemo W/Adreno-GSL: <sharedmem_gpumem_alloc_id:1554>: sharedmem_gpumem_alloc: mmap failed errno 12 Out of memory
06-13 10:30:42.022 31412-31452/bpl.com.bpl.com.bploximeterdemo E/Adreno-GSL: <gsl_memory_alloc_pure:1500>: GSL MEM ERROR: kgsl_sharedmem_alloc ioctl failed.
06-13 10:30:42.022 31412-31452/bpl.com.bpl.com.bploximeterdemo W/Adreno-GSL: <sharedmem_gpumem_alloc_id:1554>: sharedmem_gpumem_alloc: mmap failed errno 12 Out of memory
06-13 10:30:42.022 31412-31452/bpl.com.bpl.com.bploximeterdemo E/Adreno-GSL: <gsl_memory_alloc_pure:1500>: GSL MEM ERROR: kgsl_sharedmem_alloc ioctl failed.
我意识到这是一个内存错误。
注意:当我降低我的最大数据点的限制时,它会在屏幕上显示的时间更长。
例如。如果我将最大数据点更改为 360 t0 40,它将运行更多时间,例如 25 分钟。
测试的设备:
Motorola 3rd gen(2gb RAM,Marshmallow)- works like a charm
Mi4i -(2GB RAM,Lollipop)- crashes after some time , error shown as above
Karbonn Titanium(1 GB RAm,Lollipop)-crashes after few secs ,error shown as above
我不知道为什么会这样。感谢任何帮助。
【问题讨论】:
标签: android graph out-of-memory real-time android-graphview