BaseActivity
在 Android 开发中是一个常见的设计模式,用于创建一个基础活动类,其他活动可以继承这个基础类以复用通用的功能和逻辑。以下是关于 BaseActivity
的基础概念、优势、类型、应用场景以及可能遇到的问题和解决方案。
BaseActivity
是一个抽象或具体的类,它包含了许多活动共有的方法和属性。通过继承 BaseActivity
,子活动可以自动获得这些共有功能,而不需要在每个活动中重复编写相同的代码。
BaseActivity
中集中处理一些全局性的事件或逻辑,如权限请求、网络状态检查等。BaseActivity
中进行一次修改,所有继承它的活动都会自动更新。BaseActivity
中统一处理权限请求逻辑。BaseActivity
中处理一些与生命周期相关的通用任务。以下是一个简单的 BaseActivity
示例,它包含了权限请求的通用逻辑:
public abstract class BaseActivity extends AppCompatActivity {
// 请求权限的方法
protected void requestPermissions(String[] permissions, int requestCode) {
ActivityCompat.requestPermissions(this, permissions, requestCode);
}
// 权限请求结果的处理
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
// 处理权限请求结果
// ...
}
// 其他通用方法...
}
问题:在 BaseActivity
中定义的方法在子活动中无法被正确调用。
原因:可能是方法签名不匹配或者在子活动中未正确覆盖该方法。
解决方案:
BaseActivity
中的方法是 public
或 protected
的,以便子类可以访问。@Override
注解来明确表示正在覆盖父类的方法。示例代码:
public class MainActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 调用BaseActivity中的方法
requestPermissions(new String[]{Manifest.permission.CAMERA}, REQUEST_CAMERA_PERMISSION);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
// 处理权限请求结果
// ...
}
}
通过这种方式,可以确保 BaseActivity
中定义的功能在子活动中得到正确复用和执行。
领取专属 10元无门槛券
手把手带您无忧上云