zoukankan      html  css  js  c++  java
  • 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中创建异步线程?

  • 相关阅读:
    Oracle_高级功能(9) 性能优化
    Oracle_高级功能(8) 事务和锁
    Oracle_高级功能(7) 数据字典视图和动态性能视图
    Oracle_高级功能(6) 分区
    Oracle_高级功能(5) 用户、角色、权限
    Oracle_高级功能(4) 数据库存储结构
    Oracle_高级功能(3) synonym和database link
    Oracle_高级功能(2) 索引
    hdu 1561 The more, The Better 树形dp
    C. Glass Carving 正着做或者倒着做都可以
  • 原文地址:https://www.cnblogs.com/supertonny/p/4567927.html
Copyright © 2011-2022 走看看