當前位置:首頁 » 安卓系統 » android界面刷新

android界面刷新

發布時間: 2022-08-10 00:46:57

⑴ android 怎麼刷新UI組件

首先,android的UI刷新是在主線程(UI線程)中完成的。四大組件中,activity和service運行在主線程中。現在總結自己在項目中常用到的UI刷新方式。
第一,利用子線程發消息刷新UI。
子線程負責處理UI需要的數據,然後發消息到主線程來刷新UI。代碼結構如下:
new Thread(new Runnable() {

@Override
public void run() {
Person person=new Person();
person.setName(mName.getText().toString().trim());
person.setPhone(mPhone.getText().toString().trim());
Log.i("person",person.toString());
DatabaseInfoFactory.getPersonDao(mContext).addPerson(person);
Looper.prepare();
Message msg=Message.obtain();
msg.what=0x123456;
handler.sendMessage(msg);
Looper.loop();

}
}).start();
主線程中:
private Handler mHandler=new Handler(){

@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
if(msg.what==0x123456||msg.what==0x123){
fillData();
setListener();
}

}
};
第二,利用非同步任務更新UI。代碼結構如下:
new AsyncTask<void,void,void>() {

@Override
protected void onPostExecute(Void result) {

if(mAdapter==null){
mAdapter=new LeaveInfoAdapter();
//設置數據適配器
mLVleaveInfos.setAdapter(mAdapter);
Log.i("測試", "非同步任務顯示後台獲得資料庫數據");
}
else {
mAdapter.notifyDataSetChanged();

}

super.onPostExecute(result);
}

@Override
protected Void doInBackground(Void... params) {
//獲得要顯示的數據
mleaveInfos=mLeaveInfosDao.findAll();
if (mleaveInfos==null) {
Toast.makeText(HomeActivity.this,"請假數據不存在或是已經清除!", 500).show();

}

Log.i("測試", "非同步任務後台獲得資料庫數據"+mleaveInfos.size());

return null;
}
}.execute();</void,void,void>
第三,利用配置文件+activity的生命周期方法刷新UI。

⑵ android listview怎麼自動刷新

0、本質上是listview綁定Adapter,Adapter關聯List,因此List變化後導致Adapter同步變化;再通過調用adapter.notifyDataSetChanged();方法使得listview界面自動更新。
操作:
1、List<String> strName = new ArrayList<String>();//實際的數據源
2、Adapter adapter = new ArrayAdapter<String>(context,
R.layout.xmlforitem, strName);//適配器,其中 R.layout.xmlforitem是列表中每一項的布局,可以用默認的也可自建,strName則是將數據源綁定到適配器
3、listView.setAdapter(adapter);//將適配器綁定到列表顯示控制項ListView;
4、strName.add("TEST ONE");//增加一項,引起list變化,Adapter也隨之變化;
5、adapter.notifyDataSetChanged();//調用notifyDataSetChanged();更新適配器,ListView會自動刷新,notifyDataSetChanged()方法可能需要在UI線程中調用,建議自行測試;

6、數據增加可能引起內存變化,需防內存溢出;
7、其他。

⑶ android怎麼刷新activity

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

2. 刷新另一個activity界面數據(自動刷新):
在涉及到sqlite3資料庫操作的activity類下重寫onResume()方法:(此處建議復習下activity的生命周期, 並了解下onResume()方法的使用)
/**
* 調用onCreate(), 目的是刷新數據,
* 從另一activity界面返回到該activity界面時, 此方法自動調用
*/
@Override

⑷ android 怎麼刷新當前的頁面

如果希望點擊鏈接由自己處理,而不是新開Android的系統browser中響應該鏈接。給WebView加一個事件監聽對象(WebViewClient)並重寫其中的一些方法:shouldOverrideUrlLoading:對網頁中超鏈接按鈕的響應。當按下某個連接時WebViewClient會調用這個方法,並傳遞參數:按下的url。 webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); //在當前的webview中跳轉到新的url return true; } });

⑸ 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();
}
}
第一種方式還適用於消息通知的方式實現更新,第二種方式通常是主動去檢查是否需要刷新。對於定時刷新這種使用第二種方式更好。

⑹ android怎麼更新UI

首先,android的UI刷新是在主線程(UI線程)中完成的。四大組件中,activity和service運行在主線程中。現在總結自己在項目中常用到的UI刷新方式。
第一,利用子線程發消息刷新UI。
子線程負責處理UI需要的數據,然後發消息到主線程來刷新UI。代碼結構如下:
new Thread(new Runnable() {

@Override
public void run() {
Person person=new Person();
person.setName(mName.getText().toString().trim());
person.setPhone(mPhone.getText().toString().trim());
Log.i("person",person.toString());
DatabaseInfoFactory.getPersonDao(mContext).addPerson(person);
Looper.prepare();
Message msg=Message.obtain();
msg.what=0x123456;
handler.sendMessage(msg);
Looper.loop();

}
}).start();
主線程中:
private Handler mHandler=new Handler(){

@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
if(msg.what==0x123456||msg.what==0x123){
fillData();
setListener();
}

}
};
第二,利用非同步任務更新UI。代碼結構如下:
new AsyncTask<void,void,void>() {

@Override
protected void onPostExecute(Void result) {

if(mAdapter==null){
mAdapter=new LeaveInfoAdapter();
//設置數據適配器
mLVleaveInfos.setAdapter(mAdapter);
Log.i("測試", "非同步任務顯示後台獲得資料庫數據");
}
else {
mAdapter.notifyDataSetChanged();

}

super.onPostExecute(result);
}

@Override
protected Void doInBackground(Void... params) {
//獲得要顯示的數據
mleaveInfos=mLeaveInfosDao.findAll();
if (mleaveInfos==null) {
Toast.makeText(HomeActivity.this,"請假數據不存在或是已經清除!", 500).show();

}

Log.i("測試", "非同步任務後台獲得資料庫數據"+mleaveInfos.size());

return null;
}
}.execute();</void,void,void>
第三,利用配置文件+activity的生命周期方法刷新UI。

⑺ 在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 studio模擬器怎麼刷新內容

第一種方式,可以通過定時刷新項目中的文件,
1.首先需要打開的是Android studio的軟體,並在軟體中載入項目,
2.點擊菜單中的file的選項。彈出的下拉的菜單中可以看到的是為「settings」的選項。這樣就進入到了settings的設置界面中,在設置選項的列表中有一項為version control,選項並點擊進入即可。
3.點擊完version control的選項之後,就會展開這個選項的所有菜單,可以直接點擊 background的選項。
4.點擊完version control的選項之後,就會展開這個選項的所有菜單,可以直接點擊 background的選項。
5.直接進入到了background的設置界面中,在這個界面中,找到一項為VCS Historycache settings的選項,把refresh changes every的選項勾選上,對時間進行設定根據自己需要設置時間長短。
第二種方式是通過手動刷新文件的狀態,進入到Android studio的界面中,點擊菜單中 CVS。彈出的下拉的菜單中,可以看到為Refresh File status的選項,點擊完成之後,就會刷新了項目的文件的狀態。

⑼ android 怎麼刷新activity界面

首先 你在什麼地方觸發刷新。

  1. 如果是在此Activity 刷新 可以調用 onResume()方法。

  2. 如果是在別的activity 中刷新另外一個 就要使用廣播了。

    在觸發刷新的activity 發送一個廣播,

    在要刷新的activity 注冊一個接收器 ,接受你發送的廣播,然後調用Onresume。

⑽ android 怎麼刷新fragment頁面

  1. 通常的做法,在onResume中發一起一個非同步的請求去拿數據,通過回調,收到返回的數據,然後更新UI。

  2. 網路獲取數據結束判斷數據有更新,然後通過set將控制項的數據更新。

舉例:

  1. 這個是我的一個fragment,我把它放在一個viewpager的fragment中

java">{
privatestaticfinalStringARG_CITY="city";
privateStringmCity;
privateTextViewtmpD;
privateTextViewtmpN;
privateSimpleDraweeViewimageD;
privateSimpleDraweeViewimageN;
(Stringcity){
BottomFragmentOnefragment=newBottomFragmentOne();
Bundleargs=newBundle();
args.putString(ARG_CITY,city);
fragment.setArguments(args);
returnfragment;
}
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
if(getArguments()!=null){
mCity=getArguments().getString(ARG_CITY);
}
}
@Override
publicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,
BundlesavedInstanceState){
//
Viewview=inflater.inflate(R.layout.bottom_fragment_one,container,false);
tmpD=(TextView)view.findViewById(R.id.tmp_d);
tmpN=(TextView)view.findViewById(R.id.tmp_n);
imageD=(SimpleDraweeView)view.findViewById(R.id.image_d);
imageN=(SimpleDraweeView)view.findViewById(R.id.image_n);
setUI();
returnview;
}
//用來設置UI,更新UI時重新從資料庫獲取數據,進行設置
publicvoidsetUI(){
Forecastforecast=mFrecastDao.getForecastByCity(mCity);
tmpD.setText(forecast.getDaily_1_max());
tmpN.setText(forecast.getDaily_1_min());
imageD.setImageURI(getImageUri(forecast.getDaily_1_code_d()));
imageN.setImageURI(getImageUri(forecast.getDaily_1_code_n()));
}
}

2.除了上面那個,還有一個類似的fragment,我想實按下按鈕後,在兩個fragment之間進行切換。下面是按鈕代碼

@Override
publicvoidonClick(Viewv){
FragmentManagerfm=getChildFragmentManager();
//開啟Fragment事務
=fm.beginTransaction();
switch(v.getId())
{
caseR.id.button_left:
if(mBottomOne==null)
{
mBottomOne=newBottomFragmentOne().newInstanceOne(mCity);
}//使用當前Fragment的布局替代id_content的控制項
transaction.replace(R.id.bottom_weather,mBottomOne);
break;
caseR.id.button_right:
if(mBottomTwo==null)
{
mBottomTwo=newBottomFragmentTwo().newInstanceTwo(mCity);
}
transaction.replace(R.id.bottom_weather,mBottomTwo);
break;
}
//事務提交
transaction.commit();
}

3.下面是viewpager中的fragment用來更新上面兩個fragment數據的方法。

publicvoidUpdateUI(){
mBottomOne.setUI();
mBottomTwo.setUI();
}
熱點內容
怎麼查看我的wifi密碼 發布:2024-04-25 18:54:43 瀏覽:756
fckeditorforjava 發布:2024-04-25 18:50:27 瀏覽:623
優酷上傳視頻需要多久 發布:2024-04-25 18:33:05 瀏覽:675
inf12編譯器 發布:2024-04-25 18:15:39 瀏覽:99
撲克總督3安卓哪裡下載 發布:2024-04-25 18:10:02 瀏覽:395
什麼網站是php 發布:2024-04-25 18:03:42 瀏覽:221
java教程免費下載 發布:2024-04-25 18:02:01 瀏覽:443
i西安編程 發布:2024-04-25 16:55:35 瀏覽:263
核磁看壓縮 發布:2024-04-25 16:37:22 瀏覽:432
訪問不上光貓 發布:2024-04-25 16:13:44 瀏覽:319