【问题标题】:Android: Change Random images with AsyncTask and TimerAndroid:使用 AsyncTask 和 Timer 更改随机图像
【发布时间】:2013-08-14 13:57:54
【问题描述】:
我是 Android 应用开发的新手。我只是想要一些关于我想要制作的应用程序的帮助。
我正在使用 AsyncTask 来运行 Timer,但是在计时器运行后,图像将被更改。
类 syncTask 扩展 AsyncTask
{
@Override
protected Void doInBackground(Void... arg0)
{
Thread timer=new Thread(){
public void run(){
try{
sleep(3000);
}
catch(InterruptedException e){
e.printStackTrace();
}
}
};
timer.start();
return null;
}
@Override
protected void onPostExecute(Void result)
{
q=images[random.nextInt(images.length)];
frame.setImageResource(q);
w=q;
}
}
我可以做些什么来更新图像视图。请帮忙!!
【问题讨论】:
标签:
android
timer
android-asynctask
android-imageview
【解决方案1】:
不完全确定这是否有效,但我稍后会在 eclipse 中检查它。将此课程放在您的活动中。示例:
public class AndroidActivity extends Activity {
private ImageView frame;
private Image[] images = {blah, blah, blah};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_page);
frame = (ImageView)findViewById(R.id.frame);
syncTask task = new syncTask();
task.execute();
}
private class syncTask extends AsyncTask <Void, Integer, Void> {
@Override
protected int doInBackground(Void...params) {
while(true) {
publishProgress(random.nextInt(images.length));
sleep(3000);
}
}
@Override
protected void onProgressUpdate(Integer...pictureIndex) {
frame.setImageResource(images[pictureIndex]);
}
@Override
protected void onPostExecute(Void...params) {
}
}
【解决方案2】:
更好的是,使用 TimerTask:
public class AndroidActivity extends Activity {
private ImageView frame;
private Image[] images = {blah, blah, blah};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_page);
frame = (ImageView)findViewById(R.id.frame);
syncTask task = new syncTask();
Timer timer= new Timer();
task.schedule(timer, 0, 3000);;
}
private class syncTask extends TimerTask {
public void run() {
frame.setImageResource(images[random.nextInt(images.length)]);
}
}
}