java - 如何组织以下简单的 Java 代码?
问题描述
作为 Java 和 Android 的初学者,我了解 Java 允许您通过分离成不同的文件、类等来编写“干净”的代码。
现在我有以下工作代码,用于显示我当前位置的活动:
public class MainActivity extends AppCompatActivity {
private FusedLocationProviderClient mFusedLocationClient;
private LocationCallback mLocationCallback;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
LocationRequest mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(10000);
mLocationRequest.setFastestInterval(5000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
//
} else {
mFusedLocationClient.requestLocationUpdates(mLocationRequest, mLocationCallback,
null /* Looper */);
}
mLocationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
if (locationResult == null) {
return;
}
for (Location location : locationResult.getLocations()) {
// Update UI with location data
TextView tv = (TextView) findViewById(R.id.tv);
Double latDouble = location.getLatitude();
String latString = latDouble.toString();
tv.setText(latString);
}
};
};
}
我应该如何更改它以使 MainActivity 看起来更干净,并且我将大部分代码放在不同的文件中?我是否需要创建一个新的 Java 类,然后从 Main Activity 扩展它?
我想举一个例子来说明如何安排我的简单代码以使其符合 Java 约定。我知道这可能是个愚蠢的问题,但它会对我(可能还有更多的初学者)有很大帮助!谢谢
解决方案
我不会只为这么多代码创建一个单独的文件。有时你必须问自己代码的哪一部分可以在其他场景中重用,然后你可以将它组织在一个单独的抽象类、一个片段等中,并可能将它添加到它自己的模块中并将它导入到不同的项目中. 通常,分离或划分用于提高可重用性或可读性。
从上面的代码中,您可以创建一个方法来初始化您的位置请求。
例如。
public void initLocationRequest (LocationRequest request, Double millisInterval, Double millisFastestInterval, int priority) {
request.setInterval(millisInterval);
mLocationRequest.setFastestInterval(millisFastestInterval);
mLocationRequest.setPriority(priority);
}
那么你就这样称呼它:
initLocationRequest (10000, 5000, LocationRequest.PRIORITY_HIGH_ACCURACY);
如果您有许多可以在各种活动中重用的方法,您可以创建一个类(例如 LocationUtils)并将所有这些方法添加为public static。然后从你的活动中,你会打电话给他们:
LocationUtils.yourMethodName(yourMethodVariable);
推荐阅读
- c# - AppInsights 查询特定时间范围 EST
- html - 根据 div 宽度翻译标签
- google-sheets - 将字符串拆分为所有字符
- arrays - 展平 Spark DataFrame 子架构
- python - 如何加载交叉点合并图
- reactjs - 如何用本机反应“编辑页面”?
- angular - 刷新浏览器不加载页面,但在通过菜单链接导航时工作(Angular)
- java - 在while循环中声明数组是否会影响空间复杂度
- php - 如何使用 VS Code PHP Debug 配置 Docker wpdiaries/wordpress-xdebug:latest?
- context-free-grammar - Solan、Horn、Ruppin 和 Edelman 的 ADIOS(结构自动蒸馏)算法