How to use wait() method in android programming for the splash?

HeikiCyan picture HeikiCyan · Dec 9, 2012 · Viewed 9.1k times · Source

I would like to make a splash for my android app. The function is that when the app is open, first shows the splash page. Until get the first data from GPS, then it turns to the main activity. There is some problems for the wait() in my code reported by logcat.

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.Handler;
import android.widget.TextView;

public class splash extends Activity
{   int waittime;
    public void onCreate(Bundle icicle)
    {
        super.onCreate(icicle);
        setContentView(R.layout.splash);
        final TextView text=(TextView)findViewById(R.id.textView1);
        text.setText("Waiting for the GPS data update!");
        LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
        String provider = locationManager.GPS_PROVIDER;
        int c=0;
        for(int i=0; i<20;i++)
        {  
            Location location = locationManager.getLastKnownLocation(provider);
                 //get the location data from every loop
            if(location!=null)//if get the data, then turn to the main activity
            {
                new Handler().postDelayed(new Runnable() {
                    public void run() {

                        Intent mainIntent = new Intent(splash.this, MainActivity.class);
                        splash.this.startActivity(mainIntent);
                    splash.this.finish();
                    }
                }, 1000);
            }
                else
                {
                    try {
                        wait(3000);//if not get the data, wait 3 seconds until the next loop
                    } catch (InterruptedException e) {

                        e.printStackTrace();
                    }
                }
            }

        }
    }

logcat information is as follows: enter image description here

Answer

AndroidGeek picture AndroidGeek · Jul 8, 2014

use Thread.sleep instead of wait() like

 try {
            Thread.sleep(1500);
     }
    catch (InterruptedException e)
     {
              e.printStackTrace();
     }