TimerTask在android中不工作

TimerTask在android中不工作,android,random,timertask,Android,Random,Timertask,下面的代码从两个数组中获取字符串并随机显示。如何将TimerTask应用于此程序,以便数组中的字符串在几秒钟后随机更改 主要活动 public class MainActivity extends Activity { private TextSwitcher mSwitcher, mSwitcher1; private int mCounter = 0; String textToShow[]={"Main HeadLine","Your Message","New I

下面的代码从两个数组中获取字符串并随机显示。如何将TimerTask应用于此程序,以便数组中的字符串在几秒钟后随机更改

主要活动

public class MainActivity extends Activity {
    private TextSwitcher mSwitcher, mSwitcher1;
    private int mCounter = 0;
    String textToShow[]={"Main HeadLine","Your Message","New In Technology","New Articles","Business News","What IS New"};
    String textToShow1[]={"Main HeadLine","Your Message","New In Technology","New Articles","Business News","What IS New"};
    int messageCount=textToShow.length;
    // to keep current Index of text
    int currentIndex=-1; 


    public void schedule(TimerTask task,long delay,long period){
Timer timer = new Timer();
timer.schedule(new MyTimerTask(), 0, 1000);
}
    public class MyTimerTask extends TimerTask {

        @Override
        public void run() {
            updateTextView();
        }   
    }

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.example_layout);

    }
               @Override
        protected void onStart() {
            super.onStart();
            updateTextView();    
        }

        private void updateTextView() {
            mSwitcher = (TextSwitcher) findViewById(R.id.textSwitcher);
            mSwitcher1 = (TextSwitcher) findViewById(R.id.textSwitcher01);
            // BEGIN_INCLUDE(setup)
            // Set the factory used to create TextViews to switch between.
            mSwitcher.setFactory(mFactory);
            mSwitcher1.setFactory(mFactory);
           Random random = new Random();
           Animation in = AnimationUtils.loadAnimation(this,
                   android.R.anim.fade_in);
           Animation out = AnimationUtils.loadAnimation(this,
                   android.R.anim.fade_out);
           mSwitcher.setInAnimation(in);
           mSwitcher1.setInAnimation(in);
           mSwitcher.setOutAnimation(out);
           mSwitcher1.setOutAnimation(out);
            int maxIndex = textToShow.length;
            int generatedIndex = random.nextInt(maxIndex);
            mSwitcher.setText(textToShow[generatedIndex]);   
            mSwitcher1.setText(textToShow1[generatedIndex]);  
        }


    private ViewFactory mFactory = new ViewFactory() {

        @Override
        public View makeView() {

            // Create a new TextView
            TextView t = new TextView(MainActivity.this);
            t.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
            t.setTextAppearance(MainActivity.this, android.R.style.TextAppearance_Large);
            return t;
        }
    };
}
由于某些原因,字符串未更新

调用
updateTextView()方法内部
runOnUiThread
因为TimerTask运行方法在非ui线程上运行为:

public class MyTimerTask extends TimerTask {

    @Override
    public void run() {
      MainActivity.this.runOnUiThread(new Runnable() {

         @Override
         public void run() {
         updateTextView();
        }
      });
    }   
}