0

我是安卓新手。我有一个简单的应用程序,它有两个活动,运行如下:

活动一:

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次,每次添加的结果将在TextView1000ms的延迟下显示。

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) {
    }
}

现在的问题是我不知道我应该在哪里运行这段代码。它应该在创建第二个活动之后运行。

4

3 回答 3

1

只需在第二个活动的 onCreate() 方法中运行它。

于 2013-03-29T23:18:20.840 回答
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);——我会让你决定在哪里停止运行它。

于 2013-03-30T00:11:18.167 回答
0

你可以创建一个线程类的对象,并在其中放入带扣的代码。

然后每次“for”迭代,调用

thread.sleep(500);

这样,系统将0.5 sec在每次迭代中等待

于 2013-03-30T00:14:08.380 回答