• Android学习十二:跑马灯程序实现(简单联系)


    package org.tonny;
    
    import java.util.Timer;
    import java.util.TimerTask;
    
    import android.app.Activity;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.util.Log;
    import android.widget.TextView;
    
    public class MainActivity extends Activity
    {
        private TextView mTv;
        private final int TIME = 1000;
        private Timer mTimer;
        private Handler mHandler = new Handler()
        {
            public void handleMessage(Message msg)
            {
                super.handleMessage(msg);
                switch (msg.what)
                {
                case 1:
                    // AsyncTask的创建时在这里进行的,而不是在TimerTask的run中进行的
                    new OperAsyncTask().execute(mTv.getText().toString());
                    break;
                }
    
            }
    
        };
    
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mTv = (TextView) findViewById(R.id.tv_content);
    
            // 使用了TimerTask + Handler的方法来实现
            mTimer = new Timer();
            mTimer.schedule(new TimerTask()
            {
    
                @Override
                public void run()
                {
                    // 不能直接在这里创建OperAsyncTask,会报错
                    // 所以使用了这种方法
                    Message message = mHandler.obtainMessage();
                    message.what = 1;
                    mHandler.sendMessage(message);
                }
            }, TIME, TIME); // 1s后执行task,周期为1s
        }
    
        /**
         * 字符串处理
         * 
         * @param content
         * @return
         */
        private String moveHeader2TailByOne(String content)
        {
            // 获取第一个元素
            String header = content.substring(0, 1);
            // 获取从第二个元素开始的后面的所有的元素
            String tail = content.substring(1);
            return tail + header;
        }
    
        /**
         * 定义线程,用于字符串的处理和更新
         * 
         * @author Administrator
         * 
         */
        private final class OperAsyncTask extends AsyncTask<String, Void, String>
        {
    
            @Override
            protected String doInBackground(String... params)
            {
                return moveHeader2TailByOne(params[0]);
            }
    
            @Override
            protected void onPostExecute(String result)
            {
                mTv.setText(result);
            }
    
        }
    }

    字符串的处理存在问题;为什么不能再task中创建异步线程?

  • 相关阅读:
    linux下shell显示-bash-4.1#不显示路径解决方法
    update chnroute
    An error "Host key verification failed" when you connect to other computer by OSX SSH
    使用dig查询dns解析
    DNS被污染后
    TunnelBroker for EdgeRouter 后记
    mdadm详细使用手册
    关于尼康黄的原因
    Panda3d code in github
    Python实例浅谈之三Python与C/C++相互调用
  • 原文地址:https://www.cnblogs.com/supertonny/p/4567927.html
Copyright © 2020-2023  润新知