我尝试使用相机的应用程序。我分成了一些班级。相机冻结(Android)
- CameraSurface(延伸SurfaceView)
- ViewElement(延伸视图)
- MainActivity(延伸ViewElement)
- SecondActivity(延伸ViewElement)
类,我声明为活动清单中的只是MainActivity和SecondActivity。首先,当应用程序运行时,它将执行将显示CameraSurface的MainActivity(在ViewElement中存在CameraSurface类的实例,并在类ViewElement中添加到ContentView中)。 在MainActivity中有按钮将移动到MainActivity到SecondActivity。我用这个代码:
new Handler().postDelayed(new Runnable()
{
public void run()
{
MainActivity.this.startActivity(new Intent(MainActivity.this, SecondActivity.class));
}
}
, 5000L);
SecondActivity同样与MainActivity(只是有不同势按钮,但仍使用相机),问题是当应用程序执行SecondActivity相机变得冻结。我仍然不知道为什么会发生这种情况。在CameraSurface类中,如果摄像机实例不等于null,则它具有用于释放相机的部分。有人知道我的应用程序发生了什么?
附加信息我得到这个上的logcat:
01-14 16:38:23.899:d/memalloc(12581)是:/ dev/PMEM:取消映射缓冲碱:0x506f0000尺寸:1843200偏移: 1228800
01-14 16:38:23.899:d/memalloc(12581)是:/ dev/PMEM:取消映射缓冲碱:0x509b2000尺寸:614400偏移量:0
01-14 16:38:23.899: D/memalloc(12581):/ dev/pmem:取消映射缓冲区基址:0x50ca4000大小:1228800偏移量:614400
01-14 16:38:24.389:d/memalloc(12581)是:/ dev/PMEM:取消映射缓冲碱:0x50dd0000尺寸:4829184偏移:4804608
我还是不确定我从你的答案中得到了什么。所以,第一次我必须在开始第二次活动之前释放相机。此代码'新处理程序()之前,这意味着postDelayed(新的Runnable() { 公共无效的run(){ MainActivity.this.startActivity(新意图(MainActivity.this,SecondActivity.class));} } ,5000L);' 并使用你的代码来改变我的代码来调用secondActivity吧? –
我不确定相机冻结的原因。这两个是我给出的可能解决方案(可能适用于您)。 是的使用runOnUIMThread与runnable启动你的第二个活动内run()方法 – ppuskar
我使用你的两个建议,并尝试在2设备,第一个设备我有同样的问题,相机冻结。第二个设备我有黑色的背景。 –