将常见侦听器放在MainActivity类

时间:2017-02-12 09:25:28

标签: android android-lifecycle

我感兴趣,我是否可以在主要活动类中设置一些常见的侦听器?对于我的项目,我使用FirebaseAuth,所以我想在MainActivity onCreate()中初始化它,在onStart()和onStop()中设置所需的监听器,然后在每个其他活动类中继承该类。

一些令你高兴的代码:]

MainActivity类[parent]:

    public class MainActivity extends AppCompatActivity {
    private static final String TAG = MainActivity.class.getSimpleName();
    protected FirebaseAuthentication firebaseAuthentication;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        firebaseAuthentication = new FirebaseAuthentication(FirebaseAuth.getInstance(), FirebaseDatabase.getInstance());
    }

    @Override
    protected void onStart() {
        super.onStart();
        firebaseAuthentication.addAuthStateListener();
    }

    @Override
    public void onStop() {
        super.onStop();
        firebaseAuthentication.removeAuthStateListener();
    }
}

AuthActivity类[孩子]:

public class AuthActivity extends MainActivity implements FirebaseAuthentication.OnUserAuthListener {
    @BindView(R.id.viewPager) LockableViewPager viewPager;

    private String userUID;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_market);
        ButterKnife.bind(this);

        firebaseAuthentication.setOnUserAuthListener(this);
        firebaseAuthentication.isSingedIn(); // check if user is singed in
    }

    @Override
    // response for firebaseAuthentication.isSingedIn() above
    public void onAuthSuccess(String userUID) {
        this.userUID = userUID;
    }

    @Override
    // response for firebaseAuthentication.isSingedIn() above
    public void onAuthFailure(String message) {
        snackbar(message);
        Intent intent = new Intent(this, AuthActivity.class);
        startActivity(intent);
        finish(); // TODO mb should to delete it
    }
}

这种实现能否给我带来错误(可能是NullPointerExeption或将来意外发生的事情)? 如果你给我提供一些阅读/观看的资源,那将会很棒。 谢谢。

1 个答案:

答案 0 :(得分:0)

抽象的完美例子,但不是真正的问题。

通过像这样实现它,你不会得到任何nullpointers或其他错误。