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。

显然我不能使用PreferencesDatabase来保存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