簡體   English   中英

如何開始新的活動並等待一段時間並開始另一個活動?

[英]How to start new activity and wait some time and start another one?

下面的代碼啟動活動“ welcome1”並執行Thread(),然后啟動另一個名為“ gps”的活動,但是當它執行gps活動時運行而不運行活動welcome1

如何啟動welcome1並等待一段時間然后啟動活動gps

public class welcome1 extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
            .detectDiskReads().detectDiskWrites().detectNetwork()
            .penaltyLog().build());
    super.onCreate(savedInstanceState);
    setContentView(R.layout.welcome1);

    final TextView welcome = (TextView) findViewById(R.id.textView7);
    final TextView person = (TextView) findViewById(R.id.textView9);
    final Intent v = getIntent();
   final String abt = v.getStringExtra("frist_name");
    Runnable myRun=new Runnable() {
        @Override
        public void run() {
            for (int  s=0;s<2;s++){
                final int finalI =s;
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                       if (finalI==0)
                       {
                           welcome.setText(welcome2);
                                person.setText(abt);
                       }
                        if (finalI==1)
                                welcome.setText(steps);
                    }
                });
                synchronized (this) {
                    try {
                        wait(5000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    };

    Thread T=new Thread(myRun);
    T.start();
    String number = v.getStringExtra("mobile_number");
    String pwd = v.getStringExtra("pass");

    Intent d = new Intent(getBaseContext(),gps.class);
    d.putExtra("mobile_number",number);
    d.putExtra("pass", pwd);

    startActivity(d);

}

您是否嘗試過處理程序?

只需創建一個Runnable即可啟動下一個活動並像這樣運行:

new Handler().postDelayed(yourRunnable,timeinmillis)

將此代碼復制並粘貼到您的oncreate()方法中:

//This will wait for 10secs before launching the gps activity
        Handler h = new Handler();
        h.postDelayed(new Runnable() {
            @Override
            public void run() {
                startActivity(new Intent(welcome1.this, Gps.class));
            }
        }, 10000);

然后運行您的代碼,它現在應該可以工作了。

Thread T啟動之后立即調用startActivity(Intent) 因此,它會忽略您創建的Thread T並僅在UI線程中運行。

正確的代碼來做你想要的是這樣的:

public class welcome1 extends Activity {

@Override protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
            .detectDiskReads().detectDiskWrites().detectNetwork()
            .penaltyLog().build());
    super.onCreate(savedInstanceState);
    setContentView(R.layout.welcome1);

    final TextView welcome = (TextView) findViewById(R.id.textView7);
    final TextView person = (TextView) findViewById(R.id.textView9);
    final Intent v = getIntent();    final String abt = v.getStringExtra("frist_name");
    Runnable myRun=new Runnable() {
        @Override
        public void run() {
            for (int  s=0;s<2;s++){
                final int finalI =s;
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                       if (finalI==0)
                       {
                           welcome.setText(welcome2);
                                person.setText(abt);
                       }
                        if (finalI==1)
                                welcome.setText(steps);
                    }
                });
                try {
                    wait(5000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        String number = v.getStringExtra("mobile_number");
                        String pwd = v.getStringExtra("pass");

                        Intent d = new Intent(getBaseContext(),gps.class);
                        d.putExtra("mobile_number",number);
                        d.putExtra("pass", pwd);
                        startActivity(d);
                    }
                });
            }
        }
    };

    Thread T=new Thread(myRun);
    T.start();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM