java - 更改 Activity 时如何停止 PhoneStateListener

标签 java android phone-state-listener

我在 Activity 中定义了一个 PhoneStateListener,我想在更改 Activity 时停止监听器。我已尝试使用此代码来完成此操作,但它不起作用。

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;
    }

}

因此,当我们第一次访问 Activity 或从另一个 Activity 返回时,我们调用 onResume() 并启动监听器。而且,当我们使用 onPause() 退出 Activity 时,我们会停止监听器。

关于java - 更改 Activity 时如何停止 PhoneStateListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31559867/

相关文章:

java - 我需要一个算法来获取图形的色数

android - Firebase Auth 在卸载后保存。我怎样才能删除它?

android - 从android中的 fragment 中的actionbar菜单项textview获取值(value)

java - 如何在 Java 中旋转椭圆形状?

Java:从 .txt 文件逐行读取字节

android - android PhoneStateListener 是否在后台运行?

android - 网络小区更改时未调用 ACTION_PHONE_STATE_CHANGED

android - PhoneStateListener 在安卓 Lollipop 中不起作用

java - 如何使用 Java 在特定时间触发一个方法?

android - 将项目和子项目添加到 ListView