我有一个BroadcastReceiver用于接收呼叫状态和记录呼叫。
public class CallBroadcastReceiver extends BroadcastReceiver {
private static MediaRecorder recorder;
...
}
问题是当呼叫花费很长时间时,recorder object
变为空。
我知道android操作系统会在一段时间后杀死应用程序的进程并清除内存中的静态变量以释放设备的RAM。
很明显,我无法使用Preferences
或Database
来保存recorder object
。
那么如何解决我的问题?
注意:我在android 6
。
感谢您的回答。
答案 0 :(得分:0)
我找到了解决方案:
我有一个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
。