我是Android新手。我有一个简单的应用程序,它有两个活动,运行如下:
public void SendMessage(View view){
Intent intent=new Intent(this,DisplayMessage.class);
EditText editText=(EditText) findViewById(R.id.edit_message);
String message=editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}
“Extra_Message”将显示在单个TextView
并且增加1并重复10次,每次添加结果将显示在TextView
上,延迟时间为1000毫秒。
Intent intent= getIntent();
String message=intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
int no= Integer.parseInt(message);
TextView textView=new TextView(this);
textView.setTextSize(40);
for(int i=0;i<10;i++)
{
message=Integer.toString(no);
textView.setText(message);
setContentView(textView);
no++;
try {
Thread.sleep(1000);
} catch(InterruptedException e) {
}
}
现在的问题是我不知道我应该在哪里运行这段代码。它应该在创建第二个活动后运行。
答案 0 :(得分:1)
只需在第二个活动的onCreate()方法中运行它。
答案 1 :(得分:1)
在主(或UI)线程上调用Thread.sleep()是个坏主意。事实上,任何停止主线程都是一个坏主意。一种解决方案:在第二个Activity中创建一个Handler并将延迟的Runnable发布到它。使用handler.postDelayed(Runnable r, long delayMillis)
在与Handler关联的线程上调度runnable(在本例中为主线程)。
private Handler handler;
private TextView textView;
private Runnable updateTextRunnable = new Runnable() {
public void run() {
String message = ...
textView.setText(message);
handler.postDelayed(this, 1000);
}
};
public void onCreate(Bundle saved) {
super.onCreate(saved);
setContentView(R.layout.your_layout);
textView = (TextView) findViewById(R.id.your_text_view_id);
handler = new Handler();
}
public void onResume() {
super.onResume();
handler.postDelayed(updateTextRunnable, 1000);
}
你可以通过致电handler.removeCallbacks(updateTextRunnable);
来阻止它 - 我会让你决定在哪里停止运行它。
答案 2 :(得分:0)
你可以创建一个thread类的对象,并在其中加入buckle的代码。
然后每次“for”迭代,调用
thread.sleep(500);
这样,系统将在每次迭代中等待0.5 sec