gpt4 book ai didi

android - 安卓简单提醒

转载 作者:行者123 更新时间:2023-11-30 04:52:18 25 4
gpt4 key购买 nike

我正在尝试制作一个简单的计时器。

package com.anta40.reminder;

import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.os.Bundle;
import android.widget.RadioGroup;
import android.widget.TabHost;
import android.widget.TextView;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TabHost.TabSpec;

public class Reminder extends Activity{

public final int TIMER_DELAY = 1000;
public final int TIMER_ONE_MINUTE = 60000;
public final int TIMER_ONE_SECOND = 1000;
Timer timer;
TimerTask task;
TextView tv;

@Override
public void onCreate(Bundle icicle) {

super.onCreate(icicle);
setContentView(R.layout.main);
timer = new Timer();

task = new TimerTask() {

@Override
public void run() {
tv = (TextView) findViewById(R.id.textview1);
tv.setText("BOOM!!!!");
tv.setVisibility(TextView.VISIBLE);
try {
this.wait(TIMER_DELAY);
}
catch (InterruptedException e){

}
tv.setVisibility(TextView.INVISIBLE);
}

};

TabHost tabs=(TabHost)findViewById(R.id.tabhost);

tabs.setup();

TabSpec spec = tabs.newTabSpec("tag1");

spec.setContent(R.id.tab1);
spec.setIndicator("Clock");
tabs.addTab(spec);

spec=tabs.newTabSpec("tag2");
spec.setContent(R.id.tab2);
spec.setIndicator("Settings");
tabs.addTab(spec);

tabs.setCurrentTab(0);

RadioGroup rgroup = (RadioGroup) findViewById(R.id.rgroup);
rgroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {

@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (checkedId == R.id.om){
timer.schedule(task, TIMER_DELAY, 3*TIMER_ONE_SECOND);
}
else if (checkedId == R.id.twm){
timer.schedule(task, TIMER_DELAY, 6*TIMER_ONE_SECOND);
}
else if (checkedId == R.id.thm){
timer.schedule(task, TIMER_DELAY, 9*TIMER_ONE_SECOND);
}
}
});

}
}

每次单击单选按钮时,计时器都应该启动,对吗?但是为什么不启动呢?

最佳答案

首先,您不能从后台线程修改 UI。因此,您无法从 TimerTask 修改 UI。

其次,即使你“砰”的一声!逻辑在主应用程序线程上,你不允许 Android 做任何事情。 Android 的 UI 是消息和事件驱动的。当您调用 setText()setVisibility() 时,它们不会生效,直到您将控制权返回给 Android。因此,在您的情况下,您将看不到任何东西,因为 TextView 在变得可见后会立即变得不可见。

第三,如果您确实将代码移动到主应用程序线程,请不要阻塞该线程,例如您的 wait() 调用。

关于android - 安卓简单提醒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2917893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com