如何开始新的活动并等待一段时间并开始另一个活动?
问题描述:
这下面的代码开始活动“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);
然后运行你的代码,它应该现在工作。