您的位置:首页 > 其它

安卓三种线程同步方式:1. Thread+Handler 2. Handler+HandlerThread 3. AnsyncTask

2017-03-03 10:59 260 查看
public class MainActivity extends AppCompatActivity {
    Handler mChildHandler;

    HandlerThread mHandlerThread;
    Handler mHandler;
   
@Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        //1. AsyncTask
       
new ImageAsyncTask().execute();

        /*2. HandlerThread
        mHandler = new Handler();
        mHandlerThread = new HandlerThread("handlerThread");
        mHandlerThread.start();
        mChildHandler = new Handler(mHandlerThread.getLooper());
        mChildHandler.post(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(2000);
                    mHandler.post(new Runnable() {
                        @Override
                        public void run() {
                            findViewById(R.id.imageview).setVisibility(View.VISIBLE);
                        }
                    });
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });*/
        /*3. Thread+Handler
        new ChildThread().start();*/
    }

    @Override
    protected void onResume() {

        super.onResume();

    }

    class ImageAsyncTask extends AsyncTask<String, Integer, Boolean>{

        @Override
        protected Boolean doInBackground(String... params) {

            try {

                Thread.sleep(2000);

            } catch (InterruptedException e) {

                e.printStackTrace();

            }

            return null;

        }

        @Override
        protected void onPostExecute(Boolean aBoolean) {

            findViewById(R.id.imageview).setVisibility(View.VISIBLE);

        }

    }

    class ChildThread extends Thread{

        @Override
        public void run() {

            super.run();

            try {

                sleep(2000);

                mHandler.post(new Runnable() {

                    @Override
                   
public void run() {

                        findViewById(R.id.imageview).setVisibility(View.VISIBLE);

                    }

                });

            } catch (InterruptedException e) {

                e.printStackTrace();

            }

        }

    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息