【问题标题】: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)]);
          }       
      }
      }
      

      【讨论】:

        猜你喜欢
        • 2018-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多