1

私の問題は、Dialogマニフェストに次の行を追加してスプラッシュを設定すると、遅延が発生することです。android:theme="@android:style/Theme.Holo.Dialog.NoActionBar"

スプラッシュ スクリーンが消えてから、メイン アクティビティが表示されるまでに約 6 秒以上かかります。

この遅延をなくすにはどうすればよいですか?

スプラッシュ コード:

public class SplashActivity extends Activity {
private final int DURATION = 3000;
private Thread mSplashThread;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);

    mSplashThread = new Thread() {

        @Override
        public void run() {
            synchronized (this) {
                try {
                    wait(DURATION);
                } catch (InterruptedException e) {
                } finally {
                    finish();
                    Intent intent = new Intent(getBaseContext(),
                            MainActivity.class);
                    startActivity(intent);
                }
            }
        }

    };
mSplashThread.start();

}

    @Override
public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        synchronized (mSplashThread) {
            mSplashThread.notify();
        }
    }
    return true;
}

}

4

5 に答える 5

1

スプラッシュをダイアログとして使用するのではなく、すべてのバックグラウンド作業をスプラッシュ スクリーン アクティビティで実行してから、メイン アクティビティを開始できます。ダイアログ アニメーションが必要な場合は、このようなアニメーションを使用できます。

overridePendingTransition( R.anim.come_up, R.anim.go_down );

これにより、アクティビティの切り替え時間を管理できます。

于 2013-07-22T09:53:22.130 に答える
0

これはスプラッシュスクリーンを表示するためのコードで、時間の遅れがあります。

 import android.location.Criteria;
 import android.location.Location;
 import android.location.LocationListener;
 import android.location.LocationManager;
 import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.telephony.TelephonyManager;
 import android.util.Log;
 import android.view.Window;
 import android.widget.Toast;
 import android.annotation.SuppressLint;
 import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;

public class SplashScreen extends Activity  {

LocationManager locationManager;
String provider, formattedDate, imeid;
double lat, lon;



@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_NO_TITLE);

    setContentView(R.layout.splash_screen);

    Calendar c = Calendar.getInstance();
     SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
        formattedDate = df.format(c.getTime());



    new Handler().postDelayed(new Runnable() {
        public void run() {
            Log.i("JO", "run");
            Intent in = new Intent(SplashScreen.this,SecondActivity.class);
            //in.putExtra("refreshclick", clickRefreshButton);
            //in.putExtra("Current_Date", formattedDate);
        //  in.putExtra("ImeiId", imeid);
//Log.i("JO", "Current_Date"+formattedDate+";
     ImeiId"+imeid+";lat"+lat+"lon"+lon);
            startActivity(in);

            finish();
        }
    }, 1000);

}



    }
于 2013-07-22T10:25:12.157 に答える
0

この答えが適切かどうかはわかりませんが、次のようにしました:

    @Override
    public void run() 
    {
        // TODO Auto-generated method stub
        startActivity( new Intent ( SplashActivity.this , MainActivity.class ) ) ;
    }

    @Override
    protected void onStart() 
    {
        super.onStart();
        if(!isClosed)
            splashHandler.postDelayed(this, "putYourTimeHere");
    }
于 2013-07-22T09:55:51.900 に答える
0

これは私にとって最高の状態で機能しています..

final int splashTimeOut = 3000;

    Thread splashThread = new Thread(){
                int wait = 0;
                @Override
                public void run() {
                    try {
                        super.run();
                        while(wait < splashTimeOut){
                            sleep(100);
                            wait += 100;
                        }
                    } catch (Exception e) {
                    }finally{
    startActivity(new Intent(SplashScreen.this,LoginActivity.class));
                        finish();
                    }
                }
            };
            splashThread.start();
于 2013-07-22T10:09:51.353 に答える