BaseActivity.java 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package com.yc.ycvideoplayer;
  2. import android.content.Intent;
  3. import android.content.pm.ActivityInfo;
  4. import android.os.Bundle;
  5. import androidx.annotation.Nullable;
  6. import androidx.appcompat.app.AppCompatActivity;
  7. public abstract class BaseActivity extends AppCompatActivity {
  8. @Override
  9. protected void onCreate(@Nullable Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. setContentView(getContentView());
  12. //避免切换横竖屏
  13. setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
  14. initView();
  15. initListener();
  16. initData();
  17. }
  18. @Override
  19. protected void onDestroy() {
  20. super.onDestroy();
  21. //测试内存泄漏,正式一定要隐藏
  22. initLeakCanary();
  23. }
  24. @Override
  25. protected void onRestart() {
  26. super.onRestart();
  27. }
  28. @Override
  29. protected void onResume() {
  30. super.onResume();
  31. }
  32. @Override
  33. protected void onPause() {
  34. super.onPause();
  35. }
  36. /** 返回一个用于显示界面的布局id */
  37. public abstract int getContentView();
  38. /** 初始化View的代码写在这个方法中 */
  39. public abstract void initView();
  40. /** 初始化监听器的代码写在这个方法中 */
  41. public abstract void initListener();
  42. /** 初始数据的代码写在这个方法中,用于从服务器获取数据 */
  43. public abstract void initData();
  44. /**
  45. * 通过Class跳转界面
  46. **/
  47. public void startActivity(Class<?> cls) {
  48. startActivity(cls, null);
  49. }
  50. /**
  51. * 通过Class跳转界面
  52. **/
  53. public void startActivityForResult(Class<?> cls, int requestCode) {
  54. startActivityForResult(cls, null, requestCode);
  55. }
  56. /**
  57. * 含有Bundle通过Class跳转界面
  58. **/
  59. public void startActivityForResult(Class<?> cls, Bundle bundle, int requestCode) {
  60. Intent intent = new Intent();
  61. intent.setClass(this, cls);
  62. if (bundle != null) {
  63. intent.putExtras(bundle);
  64. }
  65. startActivityForResult(intent, requestCode);
  66. }
  67. /**
  68. * 含有Bundle通过Class跳转界面
  69. **/
  70. public void startActivity(Class<?> cls, Bundle bundle) {
  71. Intent intent = new Intent();
  72. intent.setClass(this, cls);
  73. if (bundle != null) {
  74. intent.putExtras(bundle);
  75. }
  76. startActivity(intent);
  77. }
  78. /**
  79. * 用来检测所有Activity的内存泄漏
  80. */
  81. private void initLeakCanary() {
  82. /*RefWatcher refWatcher = BaseApplication.getRefWatcher(this);
  83. refWatcher.watch(this);*/
  84. }
  85. }