當前位置:首頁 » 安卓系統 » android實時刷新

android實時刷新

發布時間: 2022-12-10 06:19:51

Ⅰ android中如何實現UI的實時更新

1、在主線程中啟動一個子線程

首先,我們需要在主線程中啟動一個子線程,這個比較簡單,直接在MainActivity的onCreate()方法中調用如下方法即可:

java">newThread(mRunnable).start();

2、在子線程中發送Message給Handler

在創建子線程時,我們使用了Runnable介面對象mRunnable。這里,只需要實現Runnable介面,並重寫該介面的run()方法,在run()方法中實現每1秒發送一條Message給Handler即可。具體實現方法如下:

/*
*Function:實現run()方法,每1秒發送一條Message給Handler
*/
privateRunnablemRunnable=newRunnable(){
publicvoidrun(){
while(true){
try{
Thread.sleep(1000);
mHandler.sendMessage(mHandler.obtainMessage());
}catch(InterruptedExceptione){
e.printStackTrace();
}
}
}
};

3、Handler接收Message通知

最後,我們創建一個Handler對象,用來接收Message通知。在收到Message通知後,完成刷新UI的操作即可。具體實現方法如下:

/*
*Function:實現handleMessage()方法,用於接收Message,刷新UI
*/
privateHandlermHandler=newHandler(){
publicvoidhandleMessage(Messagemsg){
super.handleMessage(msg);
refreshUI();
}
};

4、刷新UI

由以上的代碼可以看出,刷新UI的操作,我們是放在refreshUI()方法中來完成的。refreshUI()方法的實現也很簡單,調用HttpUtils工具類中的getInputStream()方法,獲得圖1所示Web工程的頁面內容輸入流,再將該輸入流轉化為字元串,放入TextView控制項中進行顯示即可。具體實現方法如下:

/*
*Function:刷新UI
*/
privatevoidrefreshUI(){
try{
InputStreaminputStream=HttpUtils.getInputStream();
StringresultData=HttpUtils.getResultData(inputStream);
mTextView.setText(resultData);
}catch(IOExceptione){
e.printStackTrace();
}
}

Ⅱ android fragment 刷新功能

本文 介紹兩點 已是fragment的切換 一是fragment刷新  

先說第一點 fragment的切換  

目前fragment在開發中應用越來越廣泛 當然也非常方便 

而我們切換fragment 也有兩中方式 

第一種是replace的方法進行的 這種方式要看運用場景 用起來很方便 但是個人感覺效果並不好 因為這種方式進行切換得話 首先他會remove掉當前的fragment,然後在new 一個新的fragment進行add,也就是說當前fragment中的所有東西都是重新載入的 所以個人不建議使用這種方式進行fragment的高頻率切換 這種只適合fragment切換和使用次數比較少的情況 

第二種是show+hide 進行fragment切換 這種方式相比第一種可能會復雜一點 首先要建立幾個fragment 開始事務 然後判斷添加 舉個例子 

1 創建fragment…… 

2 添加事務 android.app.FragmentTransaction ft = getFragmentManager().beginTransaction(); 

–#在添加之前先進行判斷隱藏#– 

// 這是hide fragment 的方法 

onHideFragment(ft); 

3 判斷添加 

if (homeFragment==null){ 

homeFragment = new HomeFragment(); 

ft.add(R.id.content,homeFragment); 

}else { 

ft.show(homeFragment); 



4 判斷隱藏 

if (homeFragment!=null){ 

ft.hide(homeFragment); 



5 添加一個默認顯示fragment 也就是你進入activity需要顯示的那個 

好 此時你就完成了使用hide + show 進行fragment切換了

現在我們說第二點 就是fragment的刷新需求  

我們可能會需要fragment的刷新功能 例如說是我首頁使用fragment 進行功能切換時 希望返回到之前的fragment可以刷新 或者返回到activity時 fragment也可以刷新 本人使用了 兩種方法進行fragment的刷新 我想大部分應該都會使用第一種 返回activity時 fragment刷新 就是重寫acvitity的onstart() 方法進行刷新fragment的數據 但是這是有弊端的 第一就是假如你使用了listview或者gridview 時會出現重復載入的情況 所以使用這種方法時 你就要進行清空數據並刷新適配器就可以避免了 

第二種 就是使用hide+show時 在fragment進行切換時 刷新fragment 此時會有這樣一個這樣的方法 onHiddenChanged(boolean hidden);看方法名 你也可以看出來 就是在hide有變化時使用 hidden參數是boolean 當hidden為true時表示fragment在hide 此時不必更新數據 當hidden為false時 他就不隱藏了 此時更新 

if (hidden){ 

return; 

}else { 

list.clear(); 

getSellList(); 



list是要清空的 避免重復載入 

–#onHiddenChanged(boolean hidden); 這是fragment的方法哦 !!!#– 

本文 到此結束 希望對各位有所幫助 有問題可以評論區提出 大家一起進步

Ⅲ 在android中,怎樣刷新當前的activity

刷新activity的方法:
1. 刷新當前activity界面數據(手動刷新):
在activity類下新增一個refresh()方法:
/**
* 刷新, 這種刷新方法,只有一個Activity實例。
*/
public void refresh() {
onCreate(null);
}

2. 刷新另一個activity界面數據(自動刷新):
在涉及到sqlite3資料庫操作的activity類下重寫onResume()方法:(此處建議復習下activity的生命周期, 並了解下onResume()方法的使用)
/**
* 調用onCreate(), 目的是刷新數據,
* 從另一activity界面返回到該activity界面時, 此方法自動調用
*/
@Override
protected void onResume() {
super.onResume();
onCreate(null);
}
由此, 涉及到sqlite資料庫數據的插入/更新/刪除的activity的類, 建議像上面一樣重寫onResume()方法, 這是本人在實踐中解決"刷新另一activity界面數據"的可行方法

Ⅳ 如何定時刷新Android界面

Android程序中可以使用的界面刷新方法有兩種,分別是利用Handler和利用postInvalidate()來實現在線程中刷新界面。
利用Handler刷新界面
實例化一個Handler對象,並重寫handleMessage方法調用invalidate()實現界面刷新;而在線程中通過sendMessage發送界面更新消息。
復制到剪貼板 java代碼// 在onCreate()中開啟線程 new Thread(new GameThread()).start();、 // 實例化一個handler Handler myHandler = new Handler() { //接收到消息後處理 public void handleMessage(Message msg) { switch (msg.what) { case Activity01.REFRESH: mGameView.invalidate(); //刷新界面 break; } super.handleMessage(msg); } }; class GameThread implements Runnable { public void run() { while (!Thread.currentThread().isInterrupted()) { Message message = new Message(); message.what = Activity01.REFRESH; //發送消息 Activity01.this.myHandler.sendMessage(message); try { Thread.sleep(100); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } } } 使用postInvalidate()刷新界面
使用postInvalidate則比較簡單,不需要handler,直接在線程中調用postInvalidate即可。
復制到剪貼板 Java代碼class GameThread implements Runnable { public void run() { while (!Thread.currentThread().isInterrupted()) { try { Thread.sleep(100); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } //使用postInvalidate可以直接在線程中更新界 mGameView.postInvalidate(); } } }

Ⅳ android Fragment 實時更新數據問題。

寫個回調的介面,當activity刷新數據的時候,調fragment的介面就可以了
或者簡單的用eventbus或者用localbroadcastreceiver

Ⅵ Android開發系列七:怎麼定時刷新界面

在做Android客戶端軟體的時候經常需要刷新某區塊內容,比如微博客戶端就需要定期檢測是否有新發布的微博內容,如果有新微博客戶端就顯示出來。Android里可以選用兩種方式來實現此功能。
方式一、使用Timer(定時器)和TimerTask實現
示例代碼:
public class MainActivity extends Activity {
private TextView msg;
final Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
update();
break;
}
super.handleMessage(msg);
}
void update() {
//刷新msg的內容
}
};
Timer timer = new Timer();
TimerTask task = new TimerTask() {
public void run() {
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
msg = (TextView) findViewById(R.id.txtMsg);
msg.setText("你好啊!");
timer.schele(task, 1000 * 40, 1000 * 30); //啟動timer
}
@Override
protected void onDestroy() {
if (timer != null) {// 停止timer
timer.cancel();
timer = null;
}
super.onDestroy();
}
}
方式二、使用Runnable和Handler
示例代碼
public class MainActivity extends Activity {
private TextView msg;
private Handler handler = new Handler();
private Runnable runnable = new Runnable() {
public void run() {
this.update();
handler.postDelayed(this, 1000 * 120);// 間隔120秒
}
void update() {
//刷新msg的內容
}
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
msg = (TextView) findViewById(R.id.txtMsg);
msg.setText("你好啊!");
handler.postDelayed(runnable, 1000 * 60);
}
@Override
protected void onDestroy() {
handler.removeCallbacks(runnable); //停止刷新
super.onDestroy();
}
}
第一種方式還適用於消息通知的方式實現更新,第二種方式通常是主動去檢查是否需要刷新。對於定時刷新這種使用第二種方式更好。

熱點內容
江西電商存儲設備怎麼樣 發布:2025-03-16 07:32:10 瀏覽:302
中信電話密碼是多少 發布:2025-03-16 07:32:08 瀏覽:364
怎麼樣學好編程 發布:2025-03-16 07:31:24 瀏覽:568
python輸出素數 發布:2025-03-16 07:31:21 瀏覽:417
顯卡加速編譯 發布:2025-03-16 07:28:53 瀏覽:682
javadebug 發布:2025-03-16 07:16:21 瀏覽:283
怎麼搭建linux伺服器ftp 發布:2025-03-16 07:07:38 瀏覽:988
晶元存儲原理 發布:2025-03-16 06:58:21 瀏覽:284
c語言中的整型 發布:2025-03-16 06:40:48 瀏覽:184
分部資料庫伺服器的IP地址有效 發布:2025-03-16 06:33:40 瀏覽:193