Java 如何在更改活动时停止PhoneStateListener
我在活动中定义了PhoneStateListener,并希望在更改活动时停止侦听器。我试着用这段代码来实现它,但它不起作用Java 如何在更改活动时停止PhoneStateListener,java,android,phone-state-listener,Java,Android,Phone State Listener,我在活动中定义了PhoneStateListener,并希望在更改活动时停止侦听器。我试着用这段代码来实现它,但它不起作用 public class OriginActivity extends AppCompatActivity{ private TelephonyManager tManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate
public class OriginActivity extends AppCompatActivity{
private TelephonyManager tManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_origin);
tManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
tManager.listen(new CustomPhoneStateListener(this), PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
}
protected void onPause() {
super.onPause();
// Logs 'app deactivate' App Event.
AppEventsLogger.deactivateApp(this);
tManager.listen(new CustomPhoneStateListener(this), PhoneStateListener.LISTEN_NONE);
}
}
我做错了什么 我找到了解决办法
public class OriginActivity extends AppCompatActivity{
CustomPhoneStateListener customPhoneStateListener;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_origin);
/**** Other Code ****/
}
protected void onResume() {
super.onResume();
//Here, we start the listener!!!
TelephonyManager tManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
customPhoneStateListener = new CustomPhoneStateListener(this);
tManager.listen(customPhoneStateListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
Log.d(TAG, "onResume");
}
protected void onPause() {
super.onPause();
//Here, we stop the listener!!!
TelephonyManager tManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
tManager.listen(customPhoneStateListener, PhoneStateListener.LISTEN_NONE);
customPhoneStateListener = null;
}
}
因此,当我们第一次访问该活动或从另一个活动返回时,我们调用onResume()并启动侦听器。当我们使用onPause()退出活动时,我们会停止侦听器。可以在服务因某种原因停止时完成(比如用户单击停止按钮)
@Override
public void onDestroy() {
super.onDestroy();
telephonyManager.listen(listener, PhoneStateListener.LISTEN_NONE);
listener = null;
}