如何开始新的活动并等待一段时间并开始另一个活动?

问题描述:

这下面的代码开始活动“welcome1”和执行线程(),然后启动名为“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); 

} 

startActivity(Intent)Thread T开始后立即被调用。因此它会忽略您创建的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(); 
} 

你有一个处理程序试过吗?

只要创建一个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); 

然后运行你的代码,它应该现在工作。