• Android线程和handler


      根据视频仿照着写了个demo:

    package com.wyl.wylthreadtest;
    
    import android.graphics.Color;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.support.v4.app.Fragment;
    import android.support.v7.app.ActionBarActivity;
    import android.view.LayoutInflater;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.ViewGroup;
    import android.widget.Button;
    import android.widget.TextView;
    
    public class MainActivity extends ActionBarActivity {
    	TextView textView;
    	Button button;
    	Handler myhandler;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            textView = (TextView)findViewById(R.id.textViewId);
            button = (Button)findViewById(R.id.buttonId);
            myhandler = new myHandler();
            
            buttonListener listener = new buttonListener();
            button.setOnClickListener(listener);
        }
        /**
         * 添加button的onclick监听器
         * @author Administrator
         *
         */
        class buttonListener implements OnClickListener{
        	@Override
        	public void onClick(View view) {
    //    		textView.setText("我的女神");
    //    		textView.setTextColor(Color.GRAY);
    //    		System.out.println("buttonListener:"+Thread.currentThread().getName());
        		
        		myThread mythread = new myThread();
        		System.out.println("buttonListener:"+Thread.currentThread().getName());
        		mythread.start();
    //    		mythread.run();
        	}
        	
        }
        /**
         * 实现自己的一个线程,模拟从网络上获取数据然后传给handler
         * @author Administrator
         *
         */
        class myThread extends Thread{
        	String name = "模拟从网络上获取数据然后传给handler";
        	
        	@Override
        	public void run() {
        		try {
    				sleep(1*1000);
    			} catch (InterruptedException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
        		System.out.println("myThead 子线程"+Thread.currentThread().getName());
        		
        		
        		
        		Message msg = myhandler.obtainMessage();
        		msg.obj = name;
        		myhandler.sendMessage(msg);
        	}
        	
        	
        }
        
        
        /**
         * handler继承Handler父类
         * @author Administrator
         *
         */
        class myHandler extends Handler{
        	@Override
        	public void handleMessage(Message msg) {
        		System.out.println("myHandler:"+Thread.currentThread().getName());
        		String name = (String)msg.obj;
        		textView.setText(name);
        	}
        	
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // Handle action bar item clicks here. The action bar will
            // automatically handle clicks on the Home/Up button, so long
            // as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();
            if (id == R.id.action_settings) {
                return true;
            }
            return super.onOptionsItemSelected(item);
        }
    
        /**
         * A placeholder fragment containing a simple view.
         */
        public static class PlaceholderFragment extends Fragment {
    
            public PlaceholderFragment() {
            }
    
            @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container,
                    Bundle savedInstanceState) {
                View rootView = inflater.inflate(R.layout.fragment_main, container, false);
                return rootView;
            }
        }
    
    }
    

      效果图如下:

  • 相关阅读:
    PAT 1097. Deduplication on a Linked List (链表)
    PAT 1096. Consecutive Factors
    PAT 1095. Cars on Campus
    PAT 1094. The Largest Generation (层级遍历)
    PAT 1093. Count PAT's
    PAT 1092. To Buy or Not to Buy
    PAT 1091. Acute Stroke (bfs)
    CSS:word-wrap/overflow/transition
    node-webkit中的requirejs报错问题:path must be a string error in Require.js
    script加载之defer和async
  • 原文地址:https://www.cnblogs.com/Sunnor/p/4669125.html
Copyright © 2020-2023  润新知