国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種多活動(dòng)觸屏消息控制方法及系統(tǒng)的制作方法

      文檔序號(hào):6637352閱讀:178來(lái)源:國(guó)知局
      一種多活動(dòng)觸屏消息控制方法及系統(tǒng)的制作方法
      【專(zhuān)利摘要】本發(fā)明涉及多活動(dòng)觸屏消息控制方法及系統(tǒng),由窗口管理服務(wù)組件負(fù)責(zé)窗口管理并對(duì)底層的觸屏消息進(jìn)行監(jiān)控管理;由主線程接收窗口管理服務(wù)組件發(fā)送的觸屏消息,派發(fā)給對(duì)應(yīng)的活動(dòng)及所屬的顯示組件進(jìn)行觸屏消息的處理;由活動(dòng)管理服務(wù)組件負(fù)責(zé)對(duì)活動(dòng)的堆棧進(jìn)行管理,并向窗口管理服務(wù)組件提供所有顯示的活動(dòng)的相關(guān)信息及其更新情況;活動(dòng)管理服務(wù)組件與各活動(dòng)所屬應(yīng)用的主線程進(jìn)行交互,控制焦點(diǎn)切換;活動(dòng)管理服務(wù)組件根據(jù)窗口管理服務(wù)組件的請(qǐng)求進(jìn)行拖動(dòng)處理,以改變觸摸點(diǎn)所在活動(dòng)的顯示區(qū)域的位置,并通知觸摸點(diǎn)所在活動(dòng)對(duì)應(yīng)的主線程刷新該活動(dòng)的顯示。對(duì)觸摸屏顯示的多個(gè)活動(dòng),本發(fā)明可以根據(jù)觸摸位置將觸屏消息準(zhǔn)確派發(fā)到對(duì)應(yīng)活動(dòng)。
      【專(zhuān)利說(shuō)明】一種多活動(dòng)觸屏消息控制方法及系統(tǒng)

      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及智能系統(tǒng)觸摸屏控制領(lǐng)域,特別涉及一種多活動(dòng)觸屏消息控制方法及系統(tǒng)。

      【背景技術(shù)】
      [0002]目前安卓(如(601(1)智能系統(tǒng)中,每個(gè)界面只能顯示一個(gè)應(yīng)用的一個(gè)活動(dòng)
      當(dāng)前活動(dòng)獲得焦點(diǎn)并占據(jù)整個(gè)屏幕進(jìn)行顯示。當(dāng)打開(kāi)新的活動(dòng)時(shí),先前的活動(dòng)失去焦點(diǎn),不再顯示;新的活動(dòng)獲得焦點(diǎn),并顯示在整個(gè)屏幕中。安卓系統(tǒng)中通過(guò)窗口管理服務(wù)組件)來(lái)負(fù)責(zé)對(duì)整個(gè)觸屏消息的控制?,F(xiàn)有的窗口管理服務(wù)組件支持一種單活動(dòng)結(jié)構(gòu)的觸屏控制機(jī)制,只保留當(dāng)前處于焦點(diǎn)的(即激活的)活動(dòng)的信息,并在接收到底層的觸屏消息后,直接將觸屏消息轉(zhuǎn)給處于焦點(diǎn)的活動(dòng)進(jìn)行處理,因而無(wú)法滿(mǎn)足多個(gè)活動(dòng)接收觸屏消息的多活動(dòng)結(jié)構(gòu)功能要求。
      [0003]具體而言,在安卓系統(tǒng)啟動(dòng)的時(shí)候,系統(tǒng)服務(wù)器(8^81:6111861-^61-)進(jìn)程會(huì)啟動(dòng)窗口管理服務(wù)組件,該窗口管理服務(wù)組件進(jìn)而通過(guò)系統(tǒng)輸入管理器(?叩謂冊(cè)叫610來(lái)監(jiān)控觸屏消息。觸屏消息都是直接分發(fā)給當(dāng)前激活的活動(dòng)窗口來(lái)處理。當(dāng)一個(gè)應(yīng)用打開(kāi)時(shí),應(yīng)用的活動(dòng)就會(huì)占據(jù)整個(gè)屏幕,在屏幕中顯示活動(dòng)下面的顯示妁組件,活動(dòng)在創(chuàng)建激活的同時(shí),會(huì)到窗口管理服務(wù)組件中注冊(cè)接收觸屏消息的通道(即觸屏消息處理通道);當(dāng)有觸屏消息觸發(fā)時(shí),輸入管理器將觸屏消息通過(guò)觸屏消息處理通道發(fā)送給當(dāng)前激活的活動(dòng)進(jìn)行處理。當(dāng)有新的活動(dòng)激活時(shí),先前激活的活動(dòng)就要向窗口管理服務(wù)組件取消接收觸屏消息處理通道,以便由新激活的活動(dòng)重新到窗口管理服務(wù)組件中注冊(cè)觸屏消息處理通道。在這種機(jī)制下,窗口管理服務(wù)組件始終只記錄當(dāng)前激活的活動(dòng)的觸屏消息處理通道,并且將所有的觸屏消息發(fā)送給當(dāng)前唯一的活動(dòng)進(jìn)行處理。
      [0004]隨著使用安卓系統(tǒng)的手機(jī)屏幕越來(lái)越大,分辨率越來(lái)越高,多個(gè)活動(dòng)同時(shí)在屏幕中顯示成為趨勢(shì)。然而,目前的窗口管理服務(wù)組件只記錄當(dāng)前處于焦點(diǎn)的活動(dòng),當(dāng)有觸屏消息過(guò)來(lái)時(shí),直接傳遞給處于焦點(diǎn)的活動(dòng)進(jìn)行處理。而當(dāng)屏幕中有多個(gè)活動(dòng)時(shí),每個(gè)活動(dòng)占據(jù)部分顯示區(qū)域,這就需要窗口管理服務(wù)組件能夠根據(jù)觸屏點(diǎn)擊位置以及各個(gè)活動(dòng)的顯示區(qū)域,將觸屏消息準(zhǔn)確的傳給對(duì)應(yīng)的活動(dòng)進(jìn)行處理。當(dāng)前的窗口管理服務(wù)組件的觸屏控制機(jī)制,顯然無(wú)法滿(mǎn)足根據(jù)用戶(hù)在屏幕中的觸摸位置將觸屏消息發(fā)送給不同活動(dòng)的要求。


      【發(fā)明內(nèi)容】

      [0005]為了解決現(xiàn)有技術(shù)的問(wèn)題,本發(fā)明提供一種多活動(dòng)觸屏消息控制方法及系統(tǒng),重新制定了窗口管理服務(wù)組件中的觸摸屏控制機(jī)制,當(dāng)有多個(gè)活動(dòng)顯示在觸摸屏上時(shí),能夠根據(jù)觸摸的位置對(duì)觸屏消息進(jìn)行不同的處理,以支持將觸屏消息準(zhǔn)確派發(fā)到顯示在觸摸屏中的多個(gè)活動(dòng)。
      [0006]為了達(dá)到上述目的,本發(fā)明的一個(gè)技術(shù)方案是提供一種多活動(dòng)觸屏消息控制方法,其中,同時(shí)顯示在觸摸屏上的多個(gè)活動(dòng),包含在初始時(shí)獲得焦點(diǎn)的第一活動(dòng),和在初始時(shí)失去焦點(diǎn)的第二活動(dòng);
      在觸摸屏上收到觸屏消息時(shí),窗口管理服務(wù)組件對(duì)觸摸點(diǎn)在觸摸屏上的位置進(jìn)行判斷:若觸摸點(diǎn)處在第一活動(dòng)的顯示區(qū)域內(nèi),將觸屏消息轉(zhuǎn)給獲得焦點(diǎn)的第一活動(dòng)進(jìn)行后續(xù)處理;若觸摸點(diǎn)處在第二活動(dòng)的顯示區(qū)域內(nèi),則進(jìn)行焦點(diǎn)切換使第二活動(dòng)獲得焦點(diǎn)后,將觸屏消息轉(zhuǎn)給切換后獲得焦點(diǎn)的第二活動(dòng)進(jìn)行后續(xù)處理;
      其中,在進(jìn)行焦點(diǎn)切換時(shí),活動(dòng)管理服務(wù)組件與第一活動(dòng)所屬應(yīng)用的第一主線程交互,由該第一主線程進(jìn)行使第一活動(dòng)失去焦點(diǎn)的操作來(lái)向窗口管理服務(wù)組件解注冊(cè)觸屏消息處理通道;活動(dòng)管理服務(wù)組件還與第二活動(dòng)所屬應(yīng)用的第二主線程交互,由該第二主線程進(jìn)行使第二活動(dòng)獲得焦點(diǎn)的操作來(lái)向窗口管理服務(wù)組件注冊(cè)觸屏消息處理通道,以便獲取觸屏消息進(jìn)行后續(xù)處理。
      [0007]優(yōu)選地,所述觸屏消息包含下操作消息、移動(dòng)消息、上操作消息;
      若下操作消息的觸摸點(diǎn),處在失去焦點(diǎn)的活動(dòng)的顯示區(qū)域時(shí),進(jìn)行焦點(diǎn)切換,并刷新整個(gè)顯示界面;
      若移動(dòng)消息的觸摸點(diǎn),處在失去焦點(diǎn)的活動(dòng)的顯示區(qū)域時(shí),活動(dòng)管理服務(wù)組件根據(jù)窗口管理服務(wù)組件的請(qǐng)求進(jìn)行拖動(dòng)處理來(lái)改變觸摸點(diǎn)所在活動(dòng)的顯示區(qū)域的位置,并通知觸摸點(diǎn)所在活動(dòng)的主線程刷新該活動(dòng)的顯示;
      若上操作消息的觸摸點(diǎn),處在失去焦點(diǎn)的活動(dòng)的顯示區(qū)域時(shí),結(jié)束拖動(dòng)處理,完成對(duì)觸屏消息的處理。
      [0008]優(yōu)選地,所述窗口管理服務(wù)組件收到觸屏消息時(shí),以及主線程對(duì)觸屏消息進(jìn)行處理時(shí),分別對(duì)觸屏消息進(jìn)行有效性檢查;
      當(dāng)收到觸屏信息中的移動(dòng)消息或上操作消息之前,先收到過(guò)所述下操作消息時(shí),判斷收到的觸屏消息是有效的,否則判斷收到的觸屏信息是無(wú)效的;
      有效性檢查之后,初始時(shí)或切換后獲得焦點(diǎn)的活動(dòng)的主線程對(duì)有效的觸屏信息進(jìn)行處理;無(wú)效的觸屏消息被丟棄而不再處理。
      [0009]優(yōu)選地,所述活動(dòng)管理服務(wù)組件向窗口管理服務(wù)組件配置所有顯示在觸摸屏上的活動(dòng)的相關(guān)信息,包括各活動(dòng)的顯示區(qū)域及焦點(diǎn)狀態(tài);窗口管理服務(wù)組件將活動(dòng)的相關(guān)信息進(jìn)行保存;
      活動(dòng)的顯示區(qū)域和/或焦點(diǎn)狀態(tài)發(fā)生任意變化時(shí),所述活動(dòng)管理服務(wù)組件都對(duì)活動(dòng)的相關(guān)信息進(jìn)行更新,并通知窗口管理服務(wù)組件對(duì)所保存的活動(dòng)的相關(guān)信息進(jìn)行更新。
      [0010]優(yōu)選地,收到觸屏信息時(shí),對(duì)其類(lèi)型進(jìn)行判斷:
      當(dāng)收到的是下操作消息時(shí),所述窗口管理服務(wù)組件將開(kāi)始句柄變量設(shè)為真,以標(biāo)識(shí)一個(gè)完整的觸屏消息處理流程開(kāi)始,并進(jìn)入下操作消息處理流程;
      當(dāng)收到的不是下操作消息后,進(jìn)一步判斷所述開(kāi)始句柄變量是否為真:
      所述開(kāi)始句柄變量為假時(shí),判斷觸屏消息無(wú)效而不做處理;
      所述開(kāi)始句柄變量為真且判斷收到的是有效的移動(dòng)消息時(shí),進(jìn)入移動(dòng)消息處理流程;所述開(kāi)始句柄變量為真且判斷收到的是有效的上操作消息時(shí),進(jìn)入上操作消息處理流程,之后設(shè)置所述開(kāi)始句柄變量為假,以標(biāo)識(shí)一個(gè)完整的觸屏消息流程結(jié)束。
      [0011〕 優(yōu)選地,所述下操作消息處理流程中,先將原先為真的拖動(dòng)狀態(tài)變量設(shè)為假;
      由所述窗口管理服務(wù)組件包含的輸入管理器根據(jù)觸屏消息的觸摸點(diǎn)的位置,對(duì)窗口管理服務(wù)組件中保存所有顯示的活動(dòng)的相關(guān)信息的列表進(jìn)行遍歷,從中查找到觸摸點(diǎn)所在的活動(dòng)并判斷該活動(dòng)的焦點(diǎn)狀態(tài):
      若觸摸點(diǎn)所在活動(dòng)獲得焦點(diǎn)時(shí),輸入管理器通過(guò)焦點(diǎn)輸入通道變量獲取該活動(dòng)所屬應(yīng)用及其主線程,將下操作消息轉(zhuǎn)給該主線程進(jìn)行處理;
      若觸摸點(diǎn)所在活動(dòng)失去焦點(diǎn)時(shí),設(shè)置所述拖動(dòng)狀態(tài)變量為真,標(biāo)識(shí)進(jìn)入拖動(dòng)處理狀態(tài),轉(zhuǎn)由所述活動(dòng)管理服務(wù)組件進(jìn)行拖動(dòng)處理。
      [0012]優(yōu)選地,所述移動(dòng)消息處理流程中,所述輸入管理器根據(jù)觸屏消息的觸摸點(diǎn)的位置,遍歷所述列表來(lái)查找觸摸點(diǎn)所在的活動(dòng),判斷該活動(dòng)的焦點(diǎn)狀態(tài),并判斷拖動(dòng)狀態(tài)變量的狀態(tài):
      若拖動(dòng)狀態(tài)變量為真時(shí),轉(zhuǎn)由所述活動(dòng)管理服務(wù)組件進(jìn)行拖動(dòng)處理;
      若拖動(dòng)狀態(tài)變量為假且觸摸點(diǎn)所在活動(dòng)失去焦點(diǎn)時(shí),不做處理;
      若拖動(dòng)狀態(tài)變量為假且觸摸點(diǎn)所在活動(dòng)獲得焦點(diǎn)時(shí),所述輸入管理器通過(guò)所述焦點(diǎn)輸入通道變量獲取該活動(dòng)所屬應(yīng)用及其主線程,并將移動(dòng)消息轉(zhuǎn)給該主線程進(jìn)行處理。
      [0013]優(yōu)選地,所述上操作消息處理流程中,輸入管理器根據(jù)觸屏消息的觸摸點(diǎn)的位置,遍歷所述列表來(lái)查找觸摸點(diǎn)所在的活動(dòng),判斷該活動(dòng)的焦點(diǎn)狀態(tài),并判斷拖動(dòng)狀態(tài)變量的狀態(tài):
      若拖動(dòng)狀態(tài)變量為真時(shí),設(shè)置該拖動(dòng)狀態(tài)變量為假,以標(biāo)識(shí)拖動(dòng)處理結(jié)束;
      若拖動(dòng)狀態(tài)變量為假且觸摸點(diǎn)所在活動(dòng)失去焦點(diǎn)時(shí),不做處理;
      若拖動(dòng)狀態(tài)變量為假且觸摸點(diǎn)所在活動(dòng)獲得焦點(diǎn)時(shí),所述輸入管理器通過(guò)所述焦點(diǎn)輸入通道變量獲取該活動(dòng)所屬應(yīng)用及其主線程,并將上操作消息轉(zhuǎn)給該主線程進(jìn)行處理。
      [0014]優(yōu)選地,所述輸入管理器包含輸入讀取線程和輸入調(diào)度線程:
      其中,所述輸入讀取線程對(duì)底層的觸屏消息進(jìn)行監(jiān)控,并將讀取到的觸屏消息轉(zhuǎn)交給所述輸入調(diào)度線程進(jìn)行后續(xù)處理。
      [0015]本發(fā)明的另一個(gè)技術(shù)方案是提供一種多活動(dòng)觸屏消息控制的系統(tǒng),其中包含:
      窗口管理服務(wù)組件,其負(fù)責(zé)窗口管理,對(duì)底層的觸屏消息進(jìn)行監(jiān)控和管理;
      主線程,負(fù)責(zé)對(duì)其所在應(yīng)用內(nèi)部的活動(dòng)進(jìn)行管理;所述主線程接收所述窗口管理服務(wù)組件發(fā)送的觸屏消息,派發(fā)給對(duì)應(yīng)的活動(dòng)及所屬的顯示組件進(jìn)行觸屏消息的處理;
      活動(dòng)管理服務(wù)組件,負(fù)責(zé)對(duì)包含觸摸屏上所有顯示的活動(dòng)的堆棧進(jìn)行管理,并向所述窗口管理服務(wù)組件提供所有顯示的活動(dòng)的相關(guān)信息及其更新的情況;
      所述活動(dòng)管理服務(wù)組件與各活動(dòng)所屬應(yīng)用的主線程進(jìn)行交互,控制焦點(diǎn)切換流程,使初始獲得焦點(diǎn)的活動(dòng)對(duì)應(yīng)的主線程向窗口管理服務(wù)組件解注冊(cè)觸屏消息處理通道使初始獲得焦點(diǎn)的活動(dòng)失去焦點(diǎn),而使初始失去焦點(diǎn)的活動(dòng)對(duì)應(yīng)的主線程向窗口管理服務(wù)組件注冊(cè)觸屏消息處理通道使初始失去焦點(diǎn)的活動(dòng)在切換后獲得焦點(diǎn);
      所述活動(dòng)管理服務(wù)組件根據(jù)窗口管理服務(wù)組件的請(qǐng)求進(jìn)行拖動(dòng)處理,以改變觸摸點(diǎn)所在活動(dòng)的顯示區(qū)域的位置,并通知觸摸點(diǎn)所在活動(dòng)對(duì)應(yīng)的主線程刷新該活動(dòng)的顯示。
      [0016]與現(xiàn)有技術(shù)相比,本發(fā)明提供的多活動(dòng)觸屏消息控制方法及系統(tǒng),其優(yōu)點(diǎn)在于:本發(fā)明制定了一整套安卓系統(tǒng)中多活動(dòng)觸屏消息控制流程;如果觸摸位置處在獲得焦點(diǎn)的活動(dòng)的顯示區(qū)域內(nèi),則將觸屏消息轉(zhuǎn)給處于焦點(diǎn)的活動(dòng)進(jìn)行處理;如果觸摸位置處在沒(méi)有獲得焦點(diǎn)的活動(dòng)的顯示區(qū)域,則控制該活動(dòng)獲得焦點(diǎn),并可以進(jìn)行后續(xù)處理;通過(guò)活動(dòng)管理服務(wù)組件/窗口管理服務(wù)組件/應(yīng)用主線程之間交互,實(shí)現(xiàn)對(duì)活動(dòng)的拖動(dòng)處理;本發(fā)明將觸屏消息的有效性檢查提前到窗口管理服務(wù)組件中進(jìn)行處理,并制定了對(duì)應(yīng)的有效性檢查策略,有效減少進(jìn)程間通信開(kāi)銷(xiāo)。

      【專(zhuān)利附圖】

      【附圖說(shuō)明】
      [0017]圖1是實(shí)現(xiàn)本發(fā)明所述多活動(dòng)觸屏消息控制的系統(tǒng)的框圖;
      圖2是本發(fā)明所述方法的流程示意圖;
      圖3是本發(fā)明所述方法中00而消息處理流程示意圖;
      圖4是本發(fā)明所述方法中1抓6消息處理流程示意圖;
      圖5是本發(fā)明所述方法中邱消息處理流程示意圖。

      【具體實(shí)施方式】
      [0018]如圖1所示,本發(fā)明所述多活動(dòng)觸屏消息控制的系統(tǒng),涉及到安卓系統(tǒng)中的三個(gè)模塊:窗口管理服務(wù)組件10活動(dòng)管理服務(wù)組件20(八⑶?“抑冊(cè)叫應(yīng)用進(jìn)程的主線程30
      [001 9] 在安卓系統(tǒng)啟動(dòng)過(guò)程中,系統(tǒng)服務(wù)器(878^6.1186^61-)進(jìn)程會(huì)啟動(dòng)所述窗口管理服務(wù)組件10和活動(dòng)管理服務(wù)組件20這兩個(gè)系統(tǒng)服務(wù),這兩個(gè)組件均運(yùn)行在進(jìn)程中。
      [0020]所述窗口管理服務(wù)組件10主要負(fù)責(zé)窗口管理,在啟動(dòng)過(guò)程中會(huì)初始化輸入管理器(I即11謂冊(cè)叫610來(lái)負(fù)責(zé)整個(gè)觸屏消息的控制和管理;I即11謂冊(cè)叫61~在初始化完成后會(huì)啟動(dòng)兩個(gè)線程,輸入讀取線程(1111)111:^68(161-1111-68(1)和輸入調(diào)度線程(1即111:0181)211x1161*1111*621(1):其中,1^111:^68(161-1111-68(1 用來(lái)監(jiān)控底層的觸屏消息,當(dāng)有觸屏消息過(guò)來(lái)后,讀取觸屏消息并轉(zhuǎn)交給 11^)111:0181)211x1161*1111*621(1 進(jìn)行后續(xù)處理。
      [0021]所述活動(dòng)管理服務(wù)組件20主要負(fù)責(zé)活動(dòng)(八的管理,以實(shí)現(xiàn)八的顯示和切換等相關(guān)操作,根據(jù)八打開(kāi)的先后順序,通過(guò)堆棧來(lái)管理八列表,在八發(fā)生焦點(diǎn)切換時(shí),和各八所處的應(yīng)用進(jìn)程的主線程30進(jìn)行交互,控制整個(gè)焦點(diǎn)切換流程,根據(jù)窗口管理服務(wù)組件10的請(qǐng)求對(duì)八進(jìn)行拖動(dòng)處理,并將相關(guān)八巧41忭的信息更新到窗口管理服務(wù)組件10中,以便窗口管理服務(wù)組件10的1111)111:18118861-模塊進(jìn)行觸屏消息的有效控制。
      [0022]每個(gè)應(yīng)用在啟動(dòng)時(shí),都會(huì)啟動(dòng)一個(gè)主線程30,用來(lái)管理應(yīng)用進(jìn)程內(nèi)部的
      同時(shí)通過(guò)該線程來(lái)接收窗口管理服務(wù)組件10發(fā)送過(guò)來(lái)的觸屏消息,并派發(fā)給對(duì)應(yīng)的八巧14忭及其所屬的顯示”16妁組件進(jìn)行觸屏消息的處理。在活動(dòng)管理服務(wù)組件20進(jìn)行八拖動(dòng)處理時(shí),需要通知應(yīng)用主線程30對(duì)八進(jìn)行刷新顯示,在進(jìn)行八巧14忭焦點(diǎn)切換時(shí),需要向窗口管理服務(wù)組件10注冊(cè)/解注冊(cè)觸屏消息處理通道。
      [0023]當(dāng)安卓系統(tǒng)初始化完成后,就會(huì)有應(yīng)用進(jìn)程的八處于焦點(diǎn),此時(shí)應(yīng)用進(jìn)程的主線程30就會(huì)向窗口管理服務(wù)組件10注冊(cè)處于焦點(diǎn)的八巧14忭的觸屏消息處理通道,由窗口管理服務(wù)組件10保存在1^0(31181111)1^0^111161 (焦點(diǎn)輸入通道)變量中;1111)111:18118861-通過(guò)該即111:0151111161變量就可以獲知當(dāng)前處于焦點(diǎn)的八所處的應(yīng)用進(jìn)程以及對(duì)應(yīng)的主線程30,以便將觸屏消息轉(zhuǎn)交給其對(duì)應(yīng)的主線程30進(jìn)行后續(xù)處理。
      [0024]當(dāng)有多個(gè)八巧14忭顯示在屏幕上時(shí),負(fù)責(zé)管理八巧14忭的活動(dòng)管理服務(wù)組件20會(huì)向窗口管理服務(wù)組件10配置所有顯示在屏幕上的八巧14忭的相關(guān)信息,包括顯示區(qū)域和焦點(diǎn)狀態(tài)。為了完成多八巧1##觸屏消息控制,窗口管理服務(wù)組件10將八巧140的相關(guān)信息保存至11101鄧1217八⑶411:71181:列表,I即此此的陰!"監(jiān)控到底層的觸屏消息后,根據(jù)觸屏消息的觸摸點(diǎn)來(lái)確定具體點(diǎn)擊了哪個(gè)八^140,然后進(jìn)行后續(xù)處理。八相關(guān)信息的更新由活動(dòng)管理服務(wù)組件20來(lái)完成。每次八顯示區(qū)域和焦點(diǎn)狀態(tài)發(fā)生變化時(shí),都需要更新窗口管理服務(wù)組件10所保存的八相關(guān)信息。
      [0025]在安卓系統(tǒng)中,觸屏消息分為三種類(lèi)型:0冊(cè)II (下操作)消息、10^6 (移動(dòng))消息、邱(上操作)消息,三種類(lèi)型的消息都會(huì)附帶對(duì)應(yīng)觸摸點(diǎn)的坐標(biāo)。一個(gè)完整的觸屏消息過(guò)程首先會(huì)是00財(cái)1消息,然后會(huì)是連續(xù)的尬凡6消息,最后是II?消息。1111)111:0181)211x1161*1111*68(1線程收到觸屏消息后,首先會(huì)對(duì)觸屏消息進(jìn)行有效性檢查:對(duì)于無(wú)效的觸屏消息(比如沒(méi)有00^11類(lèi)型的觸屏消息,而直接收到的1(^6或V。消息),則直接丟棄。對(duì)于有效的觸屏消息才進(jìn)入處理流程,轉(zhuǎn)給應(yīng)用進(jìn)程的主線程30進(jìn)行處理。應(yīng)用進(jìn)程的主線程30處理觸屏消息時(shí)仍然要做有效性檢查,從而能夠減少應(yīng)用進(jìn)程對(duì)無(wú)效觸屏消息的接收和處理,因?yàn)槊恳淮螌⑾⑥D(zhuǎn)給應(yīng)用進(jìn)程都是一次跨進(jìn)程的通信,系統(tǒng)開(kāi)銷(xiāo)會(huì)較大,提前進(jìn)行觸屏消息的有效性檢查,可以減少這方面的開(kāi)銷(xiāo),提高系統(tǒng)效率。
      [0026]本發(fā)明中,對(duì)于00--類(lèi)型的觸屏消息,會(huì)根據(jù)坐標(biāo)點(diǎn)判斷點(diǎn)擊在哪個(gè)八中,對(duì)于處于焦點(diǎn)的八則直接轉(zhuǎn)交該八進(jìn)行處理;對(duì)于點(diǎn)擊了非焦點(diǎn)的八則進(jìn)行八焦點(diǎn)切換,重新刷新界面。對(duì)于1*^6類(lèi)型的觸屏消息,如果點(diǎn)擊的是處于焦點(diǎn)的八同00--消息一樣,直接轉(zhuǎn)交該八進(jìn)行處理;如果點(diǎn)擊的是非焦點(diǎn)的八則進(jìn)行拖動(dòng)處理,并根據(jù)八位置發(fā)生的變化,刷新八顯示。對(duì)于II?類(lèi)型的觸屏消息,如果點(diǎn)擊的是處于焦點(diǎn)的八同00--消息一樣,直接轉(zhuǎn)交該八進(jìn)行處理,如果點(diǎn)擊的是非焦點(diǎn)的八則拖動(dòng)處理結(jié)束,一個(gè)完整的觸屏消息處理流程就結(jié)束了。本發(fā)明的總體原則,就是根據(jù)觸摸點(diǎn)來(lái)判斷點(diǎn)擊的是哪個(gè)八然后再根據(jù)八的狀態(tài)分別進(jìn)行處理。
      [0027]如圖2所示,本發(fā)明中進(jìn)行觸屏消息的處理過(guò)程中,接收到觸屏消息,轉(zhuǎn)給1111)111:0181)211x1161*1111*621(1進(jìn)行處理,之后對(duì)獲取的觸屏消息的類(lèi)型進(jìn)行判斷:
      一個(gè)完整的觸屏消息處理流程都是從0冊(cè)!1消息開(kāi)始,所以一旦判斷收到的是0冊(cè)!1消息,則設(shè)置(開(kāi)始句柄)變量為廿116,標(biāo)識(shí)一個(gè)完整的觸屏消息流程開(kāi)始,轉(zhuǎn)到00^1消息處理流程進(jìn)行后續(xù)處理;在之后收到10%或邱消息時(shí),才認(rèn)為是有效消息。否貝1],如果判斷收到的不是00財(cái)1消息,且進(jìn)一步判斷11186811^11(116變量為:^86時(shí),則將收到的觸屏消息視為無(wú)效消息,直接丟棄,不再做任何處理。
      [0028]當(dāng)所述111868111^11(116變量為廿116,且判斷收到有效的尬凡6消息后,轉(zhuǎn)到相應(yīng)的10^6消息流程進(jìn)行處理。而當(dāng)所述111868111^111(116變量為廿116,且判斷收到有效的II?消息后,需要設(shè)置該變量為&186,標(biāo)識(shí)一個(gè)完整的觸屏消息流程結(jié)束,此后就只有收到00--消息才被視為有效消息。如果在11186811^2111(116為&186,即沒(méi)有收到00--消息的前提下,收到了 1076/?類(lèi)型的消息,均視為無(wú)效消息,直接丟棄處理。
      [0029]如圖3所示,00--消息處理流程中,如果11101'叫31:211:118(拖動(dòng)狀態(tài))變量為1:1*116的,將其設(shè)為&186。之后,I即11謂冊(cè)叫61'通過(guò)觸屏消息的坐標(biāo)點(diǎn),遍歷11101鄧1217八。1:1^11:71181:列表,從中找到點(diǎn)擊的八由于屏幕中沒(méi)有空白區(qū)域,始終有八顯示在某個(gè)區(qū)域,所以一定能從11101鄧1517八列表中找到對(duì)應(yīng)的八01:1^11:7。
      [0030]進(jìn)而判斷點(diǎn)擊的八是否處于焦點(diǎn):對(duì)于處于焦點(diǎn)的通過(guò)111^001181111)111:0118111161變量獲取應(yīng)用進(jìn)程及其主線程30,將00財(cái)1類(lèi)型的觸屏消息轉(zhuǎn)給對(duì)應(yīng)的主線程30進(jìn)行處理。如果點(diǎn)擊的是非焦點(diǎn)的八01:1^11:7,則設(shè)置所述他!'叫3仏加8變量為廿1X6,以便進(jìn)行后續(xù)的拖動(dòng)處理,直到接收到邱消息或者下一個(gè)00而消息后,將該11101'叫3仏加8變量設(shè)為&186,標(biāo)識(shí)拖動(dòng)操作結(jié)束。拖動(dòng)相關(guān)處理由活動(dòng)管理服務(wù)組件20來(lái)完成。
      [0031]活動(dòng)管理服務(wù)組件20收到該事件后,要進(jìn)行焦點(diǎn)切換,需要通知先前處于焦點(diǎn)的八巧14忭所處的應(yīng)用進(jìn)程和主線程30,進(jìn)行失去焦點(diǎn)的操作,包括向窗口管理服務(wù)組件10解注冊(cè)觸屏消息處理通道,以便新獲得焦點(diǎn)的八巧41忭能夠向窗口管理服務(wù)組件10注冊(cè)觸屏消息處理通道。當(dāng)新的八忭獲得焦點(diǎn)后,刷新整個(gè)顯示界面,向窗口管理服務(wù)組件10注冊(cè)觸屏消息處理通道,以便新的八巧41忭能夠接收到觸屏消息;由于八巧41忭的焦點(diǎn)信息變了,還需要通知窗口管理服務(wù)組件10對(duì)11101鄧1217八01^^11:71181:列表中的相關(guān)狀態(tài)信息進(jìn)行更新,以便I即11謂冊(cè);^61~能夠正確對(duì)觸屏消息進(jìn)行處理。
      [0032]如圖4所示,1(^6消息處理流程中,1即111:1冊(cè);^61'通過(guò)觸屏消息的坐標(biāo)點(diǎn),遍歷
      列表,獲取點(diǎn)擊的八判斷11101'叫31:511:118變量的狀態(tài):
      如果先前的00財(cái)1消息是點(diǎn)擊在非焦點(diǎn)的八01:1^11:7上,則會(huì)設(shè)置11101'叫3仏加8變量為廿116,標(biāo)識(shí)進(jìn)行拖動(dòng)處理流程。因此,當(dāng)判斷11101'叫義社仍變量為廿116時(shí),后續(xù)的尬凡一消息都會(huì)轉(zhuǎn)給活動(dòng)管理服務(wù)組件20進(jìn)行拖動(dòng)處理?;顒?dòng)管理服務(wù)組件20收到該請(qǐng)求后,根據(jù)1(^6消息的坐標(biāo)點(diǎn)更新對(duì)應(yīng)活動(dòng)管理服務(wù)組件20的顯示坐標(biāo),通知八對(duì)應(yīng)應(yīng)用進(jìn)程的主線程30進(jìn)行顯示屏幕刷新操作。由于顯示在屏幕上的八巧14忭坐標(biāo)發(fā)生了變化,需要通知窗口管理服務(wù)組件10更新11101鄧1217八⑶列表中的顯示坐標(biāo)信息,以便1111)111:18118861-能夠正確的定位坐標(biāo)對(duì)應(yīng)的八
      [0033]對(duì)于11101'叫31:211:118變量為:^186的情況,如果點(diǎn)擊的八1VI丨7沒(méi)有處于焦點(diǎn),貝1]不進(jìn)行處理。如果點(diǎn)擊的八01:1^11:7處于焦點(diǎn),則通過(guò)即111:0121皿61變量獲取應(yīng)用進(jìn)程及其主線程30后,將10%消息轉(zhuǎn)給對(duì)應(yīng)應(yīng)用進(jìn)程的主線程30進(jìn)行處理。
      [0034]如圖5所示,II?消息處理流程中,1即111:1冊(cè);^61~通過(guò)觸屏消息的坐標(biāo)點(diǎn),遍歷
      列表,獲取點(diǎn)擊的八判斷11101'叫31:511:118變量的狀態(tài):
      如果判斷11101'叫3仏加8變量為1:1*116,表示該觸屏消息處于拖動(dòng)處理狀態(tài)下,則設(shè)置該11101'叫3仏加8變量為;1^186,標(biāo)識(shí)拖動(dòng)處理結(jié)束。如果判斷不處于拖動(dòng)狀態(tài)中,則判斷坐標(biāo)點(diǎn)所處的&是否處于焦點(diǎn)中,對(duì)于非焦點(diǎn)的八則不進(jìn)行任何處理。如果是點(diǎn)擊在處于焦點(diǎn)的八01:1x11:7中,則通過(guò)即111:0121皿61變量獲取應(yīng)用進(jìn)程及其主線程30后,將邱消息轉(zhuǎn)給對(duì)應(yīng)應(yīng)用進(jìn)程的主線程30進(jìn)行處理。
      [0035]綜上所述,本發(fā)明提供的多活動(dòng)觸屏消息控制方法及系統(tǒng),在有多個(gè)活動(dòng)顯示在觸摸屏上時(shí),如果觸摸位置處在獲得焦點(diǎn)的活動(dòng)的顯示區(qū)域內(nèi),則將觸屏消息轉(zhuǎn)給處于焦點(diǎn)的活動(dòng)進(jìn)行處理;如果觸摸位置處在沒(méi)有獲得焦點(diǎn)的活動(dòng)的顯示區(qū)域,則控制該活動(dòng)獲得焦點(diǎn),并可以進(jìn)行后續(xù)處理。
      [0036]盡管本發(fā)明的內(nèi)容已經(jīng)通過(guò)上述優(yōu)選實(shí)施例作了詳細(xì)介紹,但應(yīng)當(dāng)認(rèn)識(shí)到上述的描述不應(yīng)被認(rèn)為是對(duì)本發(fā)明的限制。在本領(lǐng)域技術(shù)人員閱讀了上述內(nèi)容后,對(duì)于本發(fā)明的多種修改和替代都將是顯而易見(jiàn)的。因此,本發(fā)明的保護(hù)范圍應(yīng)由所附的權(quán)利要求來(lái)限定。
      【權(quán)利要求】
      1.一種多活動(dòng)觸屏消息控制方法,其特征在于, 同時(shí)顯示在觸摸屏上的多個(gè)活動(dòng),包含在初始時(shí)獲得焦點(diǎn)的第一活動(dòng),和在初始時(shí)失去焦點(diǎn)的第二活動(dòng); 在觸摸屏上收到觸屏消息時(shí),窗口管理服務(wù)組件(10)對(duì)觸摸點(diǎn)在觸摸屏上的位置進(jìn)行判斷:若觸摸點(diǎn)處在第一活動(dòng)的顯示區(qū)域內(nèi),將觸屏消息轉(zhuǎn)給獲得焦點(diǎn)的第一活動(dòng)進(jìn)行后續(xù)處理;若觸摸點(diǎn)處在第二活動(dòng)的顯示區(qū)域內(nèi),則進(jìn)行焦點(diǎn)切換使第二活動(dòng)獲得焦點(diǎn)后,將觸屏消息轉(zhuǎn)給切換后獲得焦點(diǎn)的第二活動(dòng)進(jìn)行后續(xù)處理; 其中,在進(jìn)行焦點(diǎn)切換時(shí),活動(dòng)管理服務(wù)組件(20)與第一活動(dòng)所屬應(yīng)用的第一主線程交互,由該第一主線程進(jìn)行使第一活動(dòng)失去焦點(diǎn)的操作來(lái)向窗口管理服務(wù)組件(10)解注冊(cè)觸屏消息處理通道;活動(dòng)管理服務(wù)組件(20)還與第二活動(dòng)所屬應(yīng)用的第二主線程交互,由該第二主線程進(jìn)行使第二活動(dòng)獲得焦點(diǎn)的操作來(lái)向窗口管理服務(wù)組件(10)注冊(cè)觸屏消息處理通道,以便獲取觸屏消息進(jìn)行后續(xù)處理。
      2.如權(quán)利要求1所述的多活動(dòng)觸屏消息控制方法,其特征在于, 所述觸屏消息包含下操作消息、移動(dòng)消息、上操作消息; 若下操作消息的觸摸點(diǎn),處在失去焦點(diǎn)的活動(dòng)的顯示區(qū)域時(shí),進(jìn)行焦點(diǎn)切換,并刷新整個(gè)顯示界面; 若移動(dòng)消息的觸摸點(diǎn),處在失去焦點(diǎn)的活動(dòng)的顯示區(qū)域時(shí),活動(dòng)管理服務(wù)組件(20)根據(jù)窗口管理服務(wù)組件(10)的請(qǐng)求進(jìn)行拖動(dòng)處理來(lái)改變觸摸點(diǎn)所在活動(dòng)的顯示區(qū)域的位置,并通知觸摸點(diǎn)所在活動(dòng)的主線程(30)刷新該活動(dòng)的顯示; 若上操作消息的觸摸點(diǎn),處在失去焦點(diǎn)的活動(dòng)的顯示區(qū)域時(shí),結(jié)束拖動(dòng)處理,完成對(duì)觸屏消息的處理。
      3.如權(quán)利要求2所述的多活動(dòng)觸屏消息控制方法,其特征在于, 所述窗口管理服務(wù)組件(10)收到觸屏消息時(shí),以及主線程(30)對(duì)觸屏消息進(jìn)行處理時(shí),分別對(duì)觸屏消息進(jìn)行有效性檢查; 當(dāng)收到觸屏信息中的移動(dòng)消息或上操作消息之前,先收到過(guò)所述下操作消息時(shí),判斷收到的觸屏消息是有效的,否則判斷收到的觸屏信息是無(wú)效的; 有效性檢查之后,初始時(shí)或切換后獲得焦點(diǎn)的活動(dòng)的主線程(30)對(duì)有效的觸屏信息進(jìn)行處理;無(wú)效的觸屏消息被丟棄而不再處理。
      4.如權(quán)利要求1或2或3所述的多活動(dòng)觸屏消息控制方法,其特征在于, 所述活動(dòng)管理服務(wù)組件(20)向窗口管理服務(wù)組件(10)配置所有顯示在觸摸屏上的活動(dòng)的相關(guān)信息,包括各活動(dòng)的顯示區(qū)域及焦點(diǎn)狀態(tài);窗口管理服務(wù)組件(1 )將活動(dòng)的相關(guān)信息進(jìn)行保存; 活動(dòng)的顯示區(qū)域和/或焦點(diǎn)狀態(tài)發(fā)生任意變化時(shí),所述活動(dòng)管理服務(wù)組件(20)都對(duì)活動(dòng)的相關(guān)信息進(jìn)行更新,并通知窗口管理服務(wù)組件(10)對(duì)所保存的活動(dòng)的相關(guān)信息進(jìn)行更新。
      5.如權(quán)利要求4所述的多活動(dòng)觸屏消息控制方法,其特征在于, 收到觸屏信息時(shí),對(duì)其類(lèi)型進(jìn)行判斷: 當(dāng)收到的是下操作消息時(shí),所述窗口管理服務(wù)組件(10)將開(kāi)始句柄變量設(shè)為真,以標(biāo)識(shí)一個(gè)完整的觸屏消息處理流程開(kāi)始,并進(jìn)入下操作消息處理流程; 當(dāng)收到的不是下操作消息后,進(jìn)一步判斷所述開(kāi)始句柄變量是否為真: 所述開(kāi)始句柄變量為假時(shí),判斷觸屏消息無(wú)效而不做處理; 所述開(kāi)始句柄變量為真且判斷收到的是有效的移動(dòng)消息時(shí),進(jìn)入移動(dòng)消息處理流程;所述開(kāi)始句柄變量為真且判斷收到的是有效的上操作消息時(shí),進(jìn)入上操作消息處理流程,之后設(shè)置所述開(kāi)始句柄變量為假,以標(biāo)識(shí)一個(gè)完整的觸屏消息流程結(jié)束。
      6.如權(quán)利要求5所述的多活動(dòng)觸屏消息控制方法,其特征在于, 所述下操作消息處理流程中,先將原先為真的拖動(dòng)狀態(tài)變量設(shè)為假; 由所述窗口管理服務(wù)組件(10)包含的輸入管理器根據(jù)觸屏消息的觸摸點(diǎn)的位置,對(duì)窗口管理服務(wù)組件(10)中保存所有顯示的活動(dòng)的相關(guān)信息的列表進(jìn)行遍歷,從中查找到觸摸點(diǎn)所在的活動(dòng)并判斷該活動(dòng)的焦點(diǎn)狀態(tài): 若觸摸點(diǎn)所在活動(dòng)獲得焦點(diǎn)時(shí),輸入管理器通過(guò)焦點(diǎn)輸入通道變量獲取該活動(dòng)所屬應(yīng)用及其主線程(30),將下操作消息轉(zhuǎn)給該主線程(30)進(jìn)行處理; 若觸摸點(diǎn)所在活動(dòng)失去焦點(diǎn)時(shí),設(shè)置所述拖動(dòng)狀態(tài)變量為真,標(biāo)識(shí)進(jìn)入拖動(dòng)處理狀態(tài),轉(zhuǎn)由所述活動(dòng)管理服務(wù)組件(20)進(jìn)行拖動(dòng)處理。
      7.如權(quán)利要求6所述的多活動(dòng)觸屏消息控制方法,其特征在于, 所述移動(dòng)消息處理流程中,所述輸入管理器根據(jù)觸屏消息的觸摸點(diǎn)的位置,遍歷所述列表來(lái)查找觸摸點(diǎn)所在的活動(dòng),判斷該活動(dòng)的焦點(diǎn)狀態(tài),并判斷拖動(dòng)狀態(tài)變量的狀態(tài): 若拖動(dòng)狀態(tài)變量為真時(shí),轉(zhuǎn)由所述活動(dòng)管理服務(wù)組件(20)進(jìn)行拖動(dòng)處理; 若拖動(dòng)狀態(tài)變量為假且觸摸點(diǎn)所在活動(dòng)失去焦點(diǎn)時(shí),不做處理; 若拖動(dòng)狀態(tài)變量為假且觸摸點(diǎn)所在活動(dòng)獲得焦點(diǎn)時(shí),所述輸入管理器通過(guò)所述焦點(diǎn)輸入通道變量獲取該活動(dòng)所屬應(yīng)用及其主線程(30),并將移動(dòng)消息轉(zhuǎn)給該主線程(30)進(jìn)行處理。
      8.如權(quán)利要求6所述的多活動(dòng)觸屏消息控制方法,其特征在于, 所述上操作消息處理流程中,輸入管理器根據(jù)觸屏消息的觸摸點(diǎn)的位置,遍歷所述列表來(lái)查找觸摸點(diǎn)所在的活動(dòng),判斷該活動(dòng)的焦點(diǎn)狀態(tài),并判斷拖動(dòng)狀態(tài)變量的狀態(tài): 若拖動(dòng)狀態(tài)變量為真時(shí),設(shè)置該拖動(dòng)狀態(tài)變量為假,以標(biāo)識(shí)拖動(dòng)處理結(jié)束; 若拖動(dòng)狀態(tài)變量為假且觸摸點(diǎn)所在活動(dòng)失去焦點(diǎn)時(shí),不做處理; 若拖動(dòng)狀態(tài)變量為假且觸摸點(diǎn)所在活動(dòng)獲得焦點(diǎn)時(shí),所述輸入管理器通過(guò)所述焦點(diǎn)輸入通道變量獲取該活動(dòng)所屬應(yīng)用及其主線程(30),并將上操作消息轉(zhuǎn)給該主線程(30)進(jìn)行處理。
      9.如權(quán)利要求6所述的多活動(dòng)觸屏消息控制方法,其特征在于, 所述輸入管理器包含輸入讀取線程和輸入調(diào)度線程: 其中,所述輸入讀取線程對(duì)底層的觸屏消息進(jìn)行監(jiān)控,并將讀取到的觸屏消息轉(zhuǎn)交給所述輸入調(diào)度線程進(jìn)行后續(xù)處理。
      10.一種多活動(dòng)觸屏消息控制的系統(tǒng),其特征在于,包含: 窗口管理服務(wù)組件(10),其負(fù)責(zé)窗口管理,對(duì)底層的觸屏消息進(jìn)行監(jiān)控和管理; 主線程(30),負(fù)責(zé)對(duì)其所在應(yīng)用內(nèi)部的活動(dòng)進(jìn)行管理;所述主線程(30)接收所述窗口管理服務(wù)組件(10)發(fā)送的觸屏消息,派發(fā)給對(duì)應(yīng)的活動(dòng)及所屬的顯示組件進(jìn)行觸屏消息的處理; 活動(dòng)管理服務(wù)組件(20),負(fù)責(zé)對(duì)包含觸摸屏上所有顯示的活動(dòng)的堆棧進(jìn)行管理,并向所述窗口管理服務(wù)組件(10)提供所有顯示的活動(dòng)的相關(guān)信息及其更新的情況; 所述活動(dòng)管理服務(wù)組件(20)與各活動(dòng)所屬應(yīng)用的主線程(30)進(jìn)行交互,控制焦點(diǎn)切換流程,使初始獲得焦點(diǎn)的活動(dòng)對(duì)應(yīng)的主線程(30)向窗口管理服務(wù)組件(10)解注冊(cè)觸屏消息處理通道使初始獲得焦點(diǎn)的活動(dòng)失去焦點(diǎn),而使初始失去焦點(diǎn)的活動(dòng)對(duì)應(yīng)的主線程(30)向窗口管理服務(wù)組件(10)注冊(cè)觸屏消息處理通道使初始失去焦點(diǎn)的活動(dòng)在切換后獲得焦點(diǎn); 所述活動(dòng)管理服務(wù)組件(20)根據(jù)窗口管理服務(wù)組件(10)的請(qǐng)求進(jìn)行拖動(dòng)處理,以改變觸摸點(diǎn)所在活動(dòng)的顯示區(qū)域的位置,并通知觸摸點(diǎn)所在活動(dòng)對(duì)應(yīng)的主線程(30)刷新該活動(dòng)的顯示。
      【文檔編號(hào)】G06F3/0481GK104391649SQ201410731169
      【公開(kāi)日】2015年3月4日 申請(qǐng)日期:2014年12月5日 優(yōu)先權(quán)日:2014年12月5日
      【發(fā)明者】田澤豐 申請(qǐng)人:上海斐訊數(shù)據(jù)通信技術(shù)有限公司
      網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1