2017-06-19 77 views
0

這下面的代碼開始活動「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); 

} 

回答

0

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(); 
} 
1

你有一個處理程序試過嗎?

只要創建一個Runnable這將啓動下一個活動,並像這樣運行:

new Handler().postDelayed(yourRunnable,timeinmillis) 
0

將此代碼複製並粘貼到您的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); 

然後運行你的代碼,它應該現在工作。