0

次のコードを使用して、要素を ArrayList から文字列に変換します。

public static List<Location> GPSLocalLocations = new ArrayList<Location>(1);
String mystr = "";
for (int i=0; i<GPSService.GPSLocalLocations.size(); i++)
{
mystr += "\n" + GPSService.GPSLocalLocations.get(i).toString();
}

私のコードを次のように変更しました:

for (int i=0; i<GPSService.GPSLocalLocations.size(); i++)
{
    gpslog.append("\n").append(GPSService.GPSLocalLocations.get(i).toString());
}

これにより、GC Free メッセージが少なくなります:)。私の間違い、アプリケーションはそのためにハングしませんでした... ASyncTask を複数回実行したためだと思います...

ただし、1000 を超える要素の ArrayList を繰り返し処理するには、ある程度の時間がかかります (約 10 秒)。それは大丈夫ですか?

4

1 に答える 1

0

StringBuilderを使用することをお勧めします。

ここからhttp://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2_r1.1/android/location/Location.java#Location.toString%28%29 :

@Override public String  [More ...] toString() {
    return "Location[mProvider=" + mProvider +
        ",mTime=" + mTime +
        ",mLatitude=" + mLatitude +
        ",mLongitude=" + mLongitude +
        ",mHasAltitude=" + mHasAltitude +
        ",mAltitude=" + mAltitude +
        ",mHasSpeed=" + mHasSpeed +
        ",mSpeed=" + mSpeed +
        ",mHasBearing=" + mHasBearing +
        ",mBearing=" + mBearing +
        ",mHasAccuracy=" + mHasAccuracy +
        ",mAccuracy=" + mAccuracy +
        ",mExtras=" + mExtras + "]";
}

次の方法で自分で書くことをお勧めします。

public static List<Location> GPSLocalLocations = new ArrayList<Location>(1);
StringBuilder gpslog = new StringBuilder();
for (int i=0; i<GPSService.GPSLocalLocations.size(); i++)
{
    Location location = GPSService.GPSLocalLocations.get(i); 
    gpslog.append("\n")
        .append("Location[Provider=").append(location.getProvider(())())
        .append(",Time=").append(location.getTime())
        .append(",Latitude=").append(location.getLatitude())
        .append(",Longitude=").append(location.getLongitude())
        .append(",HasAltitude=").append(location.getHasAltitude())
        .append(",Altitude=").append(location.getAltitude())
        .append(",HasSpeed=").append(location.getHasSpeed())
        .append(",Speed=").append(location.getSpeed())
        .append(",HasBearing=").append(location.getHasBearing())
        .append(",Bearing=").append(location.getBearing())
        .append(",HasAccuracy=").append(location.getHasAccuracy())
        .append(",Accuracy=").append(location.getAccuracy())
        .append(",Extras=").append(location.getExtras()).append("]");
}
于 2012-04-13T20:32:18.600 に答える