在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > android Service中多線程交互

            android Service中多線程交互

            作者: 時間:2016-09-12 來源:網(wǎng)絡(luò) 收藏

            android 的service和activity是運(yùn)行在UI主線程的。在android線程中,只有主線程即UI線程有自己的默認(rèn)的消息隊列。子線程需要創(chuàng)建自己的消息隊列,并把消息發(fā)給隊列,并循環(huán)起來,發(fā)給handler處理。

            本文引用地址:http://www.biyoush.com/article/201609/304411.htm

            1、Looper.prepare();給子線程創(chuàng)建消息隊列。

            2、Looper.loop();把消息放入消息隊列并循環(huán)起來。

            如下是一個通過activity的oncreate()方法啟動服務(wù),在服務(wù)里開啟子線程,并發(fā)消息給主線程來處理的DEMO。

            3、MainActivity.java如下:

            @Override

            protected void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);

            setContentView(R.layout.activity_main);

            startService(new Intent(MainActivity.this,ServiceTest.class));

            }

            4、ServiceTest.java

            public class ServiceTest extends Service {

            private Handler mHandler=new Handler(){

            @Override

            public void handleMessage(Message msg) {

            switch (msg.what) {

            case 1:

            new Thread(){

            @Override

            public void run() {

            Log.i(服務(wù), 第2個線程);

            Looper.prepare();

            for(int i=10;i20;i++){

            Toast.makeText(getApplicationContext(), i+,0).show();

            try {

            //Thread.sleep(1000);

            } catch (Exception e) {

            // TODO: handle exception

            }

            }

            mHandler.sendEmptyMessage(2);

            Looper.loop();

            };

            }.start();

            break;

            case 2:

            new Thread(){

            @Override

            public void run() {

            Log.i(服務(wù), 第3個線程);

            Looper.prepare();

            for(int i=20;i30;i++){

            Toast.makeText(getApplicationContext(), i+,0).show();

            try {

            //Thread.sleep(1000);

            } catch (Exception e) {

            // TODO: handle exception

            }

            }

            mHandler.sendEmptyMessage(3);

            Looper.loop();

            };

            }.start();

            break;

            case 3:

            onDestroy();

            break;

            default:

            break;

            }

            super.handleMessage(msg);

            }

            };

            public ServiceTest() {

            // TODO Auto-generated constructor stub

            }

            @Override

            public IBinder onBind(Intent intent) {

            // TODO Auto-generated method stub

            return null;

            }

            @Override

            public void onCreate() {

            Log.i(服務(wù), onCreate());

            super.onCreate();

            new Thread(){

            @Override

            public void run() {

            Log.i(服務(wù), 第一個線程);

            Looper.prepare();

            for(int i=0;i10;i++){

            Toast.makeText(getApplicationContext(), i+,0).show();

            try {

            //Thread.sleep(1000);

            } catch (Exception e) {

            // TODO: handle exception

            }

            }

            mHandler.sendEmptyMessage(1);

            Looper.loop();

            };

            }.start();

            }

            @Override

            public int onStartCommand(Intent intent, int flags, int startId) {

            Log.i(服務(wù), onStartCommand);

            return super.onStartCommand(intent, flags, startId);

            }

            @Override

            public void onDestroy() {

            Log.i(服務(wù), onDestroy());

            super.onDestroy();

            stopSelf();

            }

            }



            關(guān)鍵詞:

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉