如何组织以下简单的Java代码?

时间:2018-11-18 13:16:07

标签: java android

作为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约定相匹配。我知道这可能是一个愚蠢的问题,但这会帮助我(可能还有更多的初学者)很多! 谢谢

1 个答案:

答案 0 :(得分:0)

我不会仅为此数量的代码创建一个单独的文件。有时您必须问自己,代码的哪一部分可以在其他情况下重用,然后您可能将其组织在单独的抽象类,片段等中,并可能将其添加到其自己的模块中并将其导入到不同的项目中。通常,分离或分隔用于提高可重用性或可读性。

从上面的代码中,您可以创建一种方法来初始化您的位置请求。

例如

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