MediaRecorder 静态对象在 onReceive 中变为 null
MediaRecorder static object becomes null in onReceive
我有一个 BroadcastReceiver 用于接收呼叫状态和记录呼叫。
public class CallBroadcastReceiver extends BroadcastReceiver {
private static MediaRecorder recorder;
...
}
问题是当调用时间过长时,recorder object
变为空。
我知道 android OS 会在一段时间后终止应用程序的进程并从内存中清除静态变量以释放设备的 RAM。
显然我不能使用Preferences
或Database
来保存recorder object
。
那么我该如何解决我的问题呢?
注意:我刚在 android 6
.
遇到了这个问题
感谢您的回答。
我找到了解决方案:
我有一个 Service
启动 BroadcastReceiver class
和一个注册接收者的方法:
public class TService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
...
br_call = new CallBroadcastReceiver();
this.registerReceiver(br_call, filter);
//****** THE SOLUTION IS HERE *******
return START_STICKY;
}
}
我将 return START_NO_STICKY;
替换为 return START_STICKY;
,因此 receiver's variables
在调用期间会保留在内存中,然后 recorder object
永远不会变为 null
。
我有一个 BroadcastReceiver 用于接收呼叫状态和记录呼叫。
public class CallBroadcastReceiver extends BroadcastReceiver {
private static MediaRecorder recorder;
...
}
问题是当调用时间过长时,recorder object
变为空。
我知道 android OS 会在一段时间后终止应用程序的进程并从内存中清除静态变量以释放设备的 RAM。
显然我不能使用Preferences
或Database
来保存recorder object
。
那么我该如何解决我的问题呢?
注意:我刚在 android 6
.
感谢您的回答。
我找到了解决方案:
我有一个 Service
启动 BroadcastReceiver class
和一个注册接收者的方法:
public class TService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
...
br_call = new CallBroadcastReceiver();
this.registerReceiver(br_call, filter);
//****** THE SOLUTION IS HERE *******
return START_STICKY;
}
}
我将 return START_NO_STICKY;
替换为 return START_STICKY;
,因此 receiver's variables
在调用期间会保留在内存中,然后 recorder object
永远不会变为 null
。