在Android中實現Service動態更新UI介面(Service與主程式Activity之間的資料互動或控制)
案例:通過service向遠端伺服器傳送請求,根據伺服器返回的結果動態更新主程式UI介面,主程式可實時關閉或重啟服務。
方案一:使用廣播+Service註冊BroadcastReceiver
1、在主程式activity中註冊一個BroadcastReceiver,用於接收Service釋出的廣播。
- @Override
- protectedvoid onStart() {//重寫onStart方法
- dataReceiver = new DataReceiver();
-
IntentFilter filter = new IntentFilter();//建立IntentFilter物件
- filter.addAction("com.xiaoshan.app");
- registerReceiver(dataReceiver, filter);//註冊Broadcast Receiver
- super.onStart();
- }
2、在Service中註冊一個BroadcastReceiver,用於接收主程式釋出的廣播。
- @Override
-
publicint onStartCommand(Intent intent, int flags, int startId) {//重寫onStartCommand方法 <pre name="code" class="java"> cmdReceiver = new CmdReceiver();
- IntentFilter filter = new IntentFilter();//建立IntentFilter物件
- filter.addAction("com.xiaoshan.service");
- registerReceiver(cmdReceiver, filter);//註冊Broadcast Receiver
- returnsuper.onStartCommand(intent, flags, startId);
- } </pre>
- <pre></pre>
-
<p></p>
- <pre></pre>
- <p></p>
- <h2><a name="t2"></a>傳送廣播</h2>
- <p>1、主程式釋出廣播,Service接收讀取資料。</p>
- <p>如:主程式activity可釋出廣播,用於向後臺service傳遞資料或控制資訊,如停止service命令。</p>
- <p></p>
- <pre name="code"class="java"> btnStop.setOnClickListener(new OnClickListener() {//為按鈕新增點選事件監聽
- @Override
- publicvoid onClick(View v) {//重寫onClick方法
- Intent myIntent = new Intent();//建立Intent物件
- myIntent.setAction("com.xiaoshan.service");
- myIntent.putExtra("cmd", CMD_STOP_SERVICE);
- sendBroadcast(myIntent);//傳送廣播
- }
- }); </pre><br>
- 2、Service釋出廣播,主程式Activity接收更新UI。
- <p></p>
- <p>如:Service後臺讀取網路資料,用於向Activity傳遞資料或控制介面資訊,更新UI。</p>
- <p></p>
- <pre name="code"class="java">//連線伺服器讀取資料(略)
- Object data;//伺服器返回的資料data
- Intent intent = new Intent();//建立Intent物件
- intent.setAction("com.xiaoshan.app");
- intent.putExtra("data", data);
- sendBroadcast(intent);//傳送廣播 </pre>
- <p></p>
- <p><br>
- </p>
- <p>如上實現雙向廣播註冊和接收來實現Service和主程式Activity之間的資料互動或控制。<br>
- <br>
- </p>
- <p></p>
- <h2><a name="t3"></a><span style="font-size:32px">
- 方案二:使用Handler</span><br>
- </h2>
- 1、在主程式的Activity中宣告一個static變數handler,裡面寫好回撥函式
- <p></p>
- <p></p><pre name="code"class="java"> TextView tv = ……;//這裡省略
- publicstatic Handler handler = new Handler(new Callback() {
- @Override
- publicboolean handleMessage(Message msg) {
- tv.setText(msg.getData().getString("content"));
- returnfalse;
- }
- });</pre>2、在Service裡面,呼叫這個handler,傳輸資料。<p></p>
- <p></p><pre name="code"class="java"> Message msg = MyActivity.handler.obtainMessage();
- Bundle data = new Bundle();
- data.putString("content",content);
- msg.setData(data);
- msg.sendToTarget();</pre><br>
- <br>
- <p></p>
- <p><br>
- </p>
- <p><br>
- </p>
- <br>
- <br>
- <pre></pre>
相關推薦
在Android中實現Service動態更新UI介面(Service與主程式Activity之間的資料互動或控制)
案例:通過service向遠端伺服器傳送請求,根據伺服器返回的結果動態更新主程式UI介面,主程式可實時關閉或重啟服務。 方案一:使用廣播+Service註冊BroadcastReceiver 1、在主程式activity中註冊一個BroadcastReceiver
Android中使用AsyncTask非同步更新UI介面
概述: AsyncTask是在Android SDK 1.5之後推出的一個方便編寫後臺執行緒與UI執行緒互動的輔助類。AsyncTask的內部實現是一個執行緒池,所有提交的非同步任務都會在這個執行緒池中的工作執行緒內執行,當工作執行緒需要跟UI執行緒互動時,工作執行緒
Service 動態更新 UI
binder null manager edate nds pda update ive 發送廣播 http://blog.csdn.net/u013724061/article/details/38642049 最終效果: 動態顯示當前時間和電量 思路: 首先在A
Android總結Handler非同步更新UI介面(轉載)
轉載地址:https://blog.csdn.net/qq_21004057/article/details/51582412 本篇文章通過三種方式來實現UI控制元件的更新,Handler非同步更新UI在安卓開發中最常用也非常實在。這篇文章注重實現思路,所以我就不在介面方面進行美化了,都是最原始
使用AsyncTask非同步更新UI介面(載入網路圖片)
寫這個部落格時抽抽了,順便又用了一些WebView的東西,更多webview參見這裡 1.簡單介紹下AsyncTask AsyncTask,是android提供的輕量級的非同步類,可以直接繼承AsyncTask,在類中實現非同步操作,並提供介面反饋當前非同步執行的程度(可以
啟動 nohup storm和 在瀏覽器中輸入ip:8080/index.html進入storm UI介面(注意埠不一定是8080,注意配置)
在啟動storm之前要確保nimbus和supervisor上的Zookeeper已經啟動 (1)檢視zk的狀態:./zkServer.sh status 12(2)如果zk沒有開啟,將nimbus和supervisor的zk開啟./zkServer.sh start1(3)
Android探索之旅(第十四篇)Android中實現炫酷效果的Demo(持續收錄中......)
浪起來!使用 drawBitmapMesh 實現模擬水波紋效果 簡書傳送門 三十秒實現QQ首頁動畫特效 BMoveView為RadioGroup新增移動的特
Android 仿Win8的metro的UI介面(上)
轉載請標明出處:http://blog.csdn.net/lmj623565791/article/details/23441455昨晚沒事手機下載了一些APP,發現現在仿win8的主介面越來越多,在大家見慣了類GridView或者類Tab後,給人一種耳目一新的感覺。今天在e
Android 中幾種更新UI介面的方法
android 更新UI的幾種方法 根據之前的專案經驗,以及在網上看到的一些技術文章,將UI更新的幾種方法在此做個總結:(補充一點,不要混淆了Runnable和Thread,Runnable只是個單純的任務,只是啟動這個任務需要執行緒來驅動,而這個執行緒可以是
Android線上程裡更新UI介面
在Android裡,不允許線上程裡更新UI介面,那麼當我們要更新UI介面的時候,我們要用到Handler 例子: 這裡我們在按鈕裡開啟了一個執行緒,用來動態更新文字框裡的值,然後我們執行來看一下 (報錯: Only the original thread that
Android非同步處理二:使用AsyncTask非同步更新UI介面
在《Android非同步處理一:使用Thread+Handler實現非UI執行緒更新UI介面》中,我們使用Thread+Handler的方式實現了非同步更新UI介面,這一篇中,我們介紹一種更為簡潔的實現方式:使用AsyncTask非同步更新UI介面。 概述:
Android初級開發----用Handle機制更新UI介面
引入: 之前對Android講義的一個小專案——–隨指尖移動的小球進行修改,利用View中的invalidate()方法實現每次觸碰螢幕更新(UI執行緒)小球的位置並且附加判斷大小,實現觸碰更新小球大小隨之更改顏色. API引入: 每次執行inva
Android非同步處理一:使用AsyncTask非同步更新UI介面
概述: AsyncTask是在Android SDK 1.5之後推出的一個方便編寫後臺執行緒與UI執行緒互動的輔助類。AsyncTask的內部實現是一個執行緒池,每個後臺任務會提交到執行緒池中的執行緒執行,然後使用Thread+Handler的方式呼叫回撥函式(如需深入瞭
Android非同步處理二:AsynTask介紹和使用AsyncTask非同步更新UI介面
(1)AsyncTask的介紹 通過上圖中的AsyncTask的原始碼結構圖可以看到,主要用於過載的方法是doInBackground(),onPreExecute()、onPostExecute()、onProgressUpdate()、onCanc
Android通過AIDL實現跨程序更新UI
一、概述 本篇文章將和大家一起來學習AIDL實現跨程序更新UI。 需求是:在同一個應用中有兩個Activity,MainActivity和TempActivity,這兩個Activity不在同一個程序中。 現在需要通過TempActivity來改變Ma
在Android中實現簡易的登入介面
Mainactivity佈局檔案 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res
Android中實現Wifi列表的更新即wifi的連線與使用
1.Manifest.xm配置WiFi許可權 <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /><uses-permission android:name="android.permissio
在Android中實現陰影效果
sta 技術 wid 語言 mat floating 大表 ado sch 在Android L推出後,Google提出了全新的設計語言:材質設計。其中很重要的一點就是陰影效果的使用,你可以為每一個View設置一個elevation值,相當於除了x、y之外的z值,z值決定
android中實現毛筆效果(View 中畫圖)
方法 繪畫 object android中 validate 滑動 一個 lineto 效果 近期有一個項目設計一個APP實現通過觸摸屏實現毛筆寫字效果。傳統的繪畫板程序直接通過Path的moveTo和LineTo便可實現簡單的線條繪畫程序。然而要達到毛筆的筆鋒效果
Android中 實現隊列方式處理優先級信息
div fragment als eth lean @override 需要 一個 原理 需求:當界面在處理消息A時,突然接收到消息B,需要立馬顯示B的信息,然後再繼續顯示消息A,或者接收到消息C,再顯示完消息A後再顯示消息C; 原理很簡單 在一個輪詢中,查詢消息列表中的元