1. 程式人生 > >Android 定期動態更改啟動頁

Android 定期動態更改啟動頁

我們用android手機開啟一個app,會發現一個現象就是好多的app的首頁是定期變化的(說白了其實就是伺服器端的圖片定期被更新了,android端需要定期檢測並確定是否需要開啟執行緒進行下載並儲存起來),下面小編介紹一下自己是怎麼搞的,大家互相學習交流!

1.本次用到了java中SoftReference,即物件的軟引用。如果一個物件具有軟引用,記憶體空間足夠,垃圾回收器就不會回收它;如果記憶體空間不足了,就會回收這些物件的記憶體。只要垃圾回收器沒有回收它,該物件就可以被程式使用。軟引用可用來實現記憶體敏感的高 速快取。使用軟引用能防止記憶體洩露,增強程式的健壯性。  

2.本次運用afinal_0.5_bin.jar向伺服器傳送或請求訊息;

一堆程式碼來襲:

[java] view plain copy  print?
  1. package com.demo.mouse.welcome;  
  2. import android.graphics.Bitmap;  
  3. import android.graphics.BitmapFactory;  
  4. import android.os.Handler;  
  5. import android.os.Message;  
  6. import android.text.TextUtils;  
  7. import android.util.Log;  
  8. import
     android.widget.ImageView;  
  9. <pre name="code"class="java">package com.demo.mouse.welcome;  
  10. import android.content.SharedPreferences;  
  11. import android.graphics.Bitmap;  
  12. import android.support.v7.app.AppCompatActivity;  
  13. import android.os.Bundle;  
  14. import android.util.Log;  
  15. import android.widget.ImageView;  
  16. import android.widget.RelativeLayout;  
  17. import net.tsz.afinal.FinalHttp;  
  18. import net.tsz.afinal.http.AjaxCallBack;  
  19. import org.json.JSONObject;  
  20. import java.util.Timer;  
  21. import java.util.TimerTask;  
  22. /** 
  23.  * 啟動頁 
  24.  */
  25. publicclass MainActivity extends AppCompatActivity {  
  26.     privatestatic String TAG="MainActivity";  
  27.     private  RelativeLayout welcome;  
  28.     private ImageView welocome_image;  
  29.     private SharedPreferences sps;  
  30.     private AsyncBitmapLoader aBitmapLoader;  
  31.     public Timer timer = new Timer();  
  32.     @Override
  33.     protectedvoid onCreate(Bundle savedInstanceState) {  
  34.         super.onCreate(savedInstanceState);  
  35.         setContentView(R.layout.activity_main);  
  36.         sps = getSharedPreferences(Contant.SP, MODE_PRIVATE);  
  37.         aBitmapLoader=new AsyncBitmapLoader();  
  38.         welcome = (RelativeLayout) findViewById(R.id.welcome);  
  39.         welocome_image = (ImageView) findViewById(R.id.welocome_image);  
  40.         FinalHttp http = new FinalHttp();  
  41.         http.get(Contant.QDYURL, new AjaxCallBack<String>() {  
  42.             @Override
  43.             publicvoid onFailure(Throwable t, int errorNo, String strMsg) {  
  44.                 super.onFailure(t, errorNo, strMsg);  
  45.                 Log.i("pig"1 + errorNo+"----"+strMsg);  
  46.                 initImage();  
  47.             }  
  48.             @Override
  49.             publicvoid onSuccess(String json) {  
  50.                 super.onSuccess(json);  
  51.                 Log.i("pig"2 + "");  
  52.                 try {  
  53.                     JSONObject jsons = new JSONObject(json + "");  
  54.                     Log.i(TAG,"jsons" + jsons);  
  55.                     String res = jsons.optString("img_url");  
  56.                     sps.edit().putString(Contant.SP, res).commit();  
  57.                     Log.i("start image url is",  res);  
  58.                     Bitmap bitmap = aBitmapLoader.loadBitMap(  
  59.                             welocome_image, res, new AsyncBitmapLoader.ImageCallBack() {  
  60.                                 @Override
  61.                                 publicvoid imageLoad(ImageView imageView,  
  62.                                                       Bitmap bitmap) {  
  63.                                     // TODO Auto-generated method stub
  64.                                     welocome_image.setImageBitmap(bitmap);  
  65.                                 }  
  66.                             });  
  67.                     if (bitmap == null) {  
  68.                         welocome_image.setImageResource(R.mipmap.ic_launcher);  
  69.                     } else {  
  70.                         welocome_image.setImageBitmap(bitmap);  
  71.                     }  
  72.                 } catch (Exception e) {  
  73.                     // TODO Auto-generated catch block
  74.                     e.printStackTrace();  
  75.                 }  
  76.             }  
  77.         });  
  78.         init();  
  79.     }  
  80.     privatevoid initImage() {  
  81.         // TODO Auto-generated method stub
  82.         Bitmap bitmap = aBitmapLoader.loadBitMap(welocome_image,  
  83.                 sps.getString(Contant.SP, ""), new AsyncBitmapLoader.ImageCallBack() {  
  84.                     @Override
  85.                     publicvoid imageLoad(ImageView imageView, Bitmap bitmap) {  
  86.                         // TODO Auto-generated method stub
  87.                         welocome_image.setImageBitmap(bitmap);  
  88.                     }  
  89.                 });  
  90.         if (bitmap == null) {  
  91.             welocome_image.setImageResource(R.mipmap.ic_launcher);  
  92.         } else {  
  93.             welocome_image.setImageBitmap(bitmap);  
  94.         }  
  95.     }  
  96.     /** 
  97.      * 啟動頁動畫 
  98.      */
  99.     privatevoid init() {  
  100.         TimerTask task = new TimerTask() {  
  101.             @Override
  102.             publicvoid run() {  
  103. 相關推薦

    Android 定期動態更改啟動

    我們用android手機開啟一個app,會發現一個現象就是好多的app的首頁是定期變化的(說白了其實就是伺服器端的圖片定期被更新了,android端需要定期檢測並確定是否需要開啟執行緒進行下載並

    Android Studio 動態更改圖片

    先建立圖片 用Android Studio自帶的工具建立: 先選1,2是圖片的名字,3是選擇內建圖示 然後在佈局檔案裡建立lmageView控制元件,並在java中註冊。 //控制元件名.setImageResource(R.mipmap.圖示名) kg02

    Android 啟動優化

           Android  啟動頁是一個 App 的門面, 一開啟就顯示,所以一個 App 的好與壞,使用者體驗都與啟動頁有很大的聯絡,所以,啟動頁的優化也事關重要,因此記錄一下關於啟動頁的優化方案   啟動的時候出現黑屏

    Xamarin.Android 啟動

      開啟軟體的時候相當慢,會有白屏顯示,這樣的使用者體驗效果不好,所以需要增加一個啟動頁來過渡。步驟如下: 第一步:根據自己需求找到一個png圖片,用於啟動展示,放在Drawable 資料夾下,我這裡命名為Loading.png。 第二步:在Drawable 資料夾下建立 splashscreen.xml

    Android啟動黑屏及最優解決方案

    前言 相信做過Android的朋友都知道,當一個APP啟動時,介面會首先展示一個白屏或者黑屏,然後再進入歡迎頁,稍作停留最後進入APP主頁。那麼這個黑屏或者白屏到底是怎麼一回事呢?它的最好的解決方案應該是怎樣的呢?今天我們認真的討論一下這個小問題。 點選獲取本次專案的demo 歷史原因

    react-native 啟動設定(android

    使用第三方外掛:react-native-splash-screen 下載地址:https://www.npmjs.com/package/react-native-splash-screen 第一步:安裝下載外掛 1、npm i react-native-splash-screen

    android開發系列教程(一)啟動

    1.啟動頁延時跳轉+沉浸狀態列+啟動頁圖片全屏 public class SplashActivity extends AppCompatActivity { @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)

    Android 啟動設定app icon 解決開始啟動黑屏

    1.主題設定 <activity android:name=".xx.SplashActivity" android:screenOrientation="portrait" android:theme="@style/LauncherThem

    Android APP去除啟動出現的黑色閃現

    Android APP在啟動的時候,會有預設的一個黑色預啟動背景,如果啟動頁是亮色的,十分影響視覺。我們只需要設定SplashActivity的Theme就可以了。方案有三種: 設定一張圖 <style name="Theme.AppStartLoad" parent="a

    Android動態更改TextView的字型大小

    需求: 需要動態更改TextView內容字型的大小,比如設定TextView只有一行,寬度只有200dp,內容超過這個之後就縮小字型顯示,只能能將字型都顯示完全;也就是動態更改TextView的字型大小,當TextView的內容比較多時縮小顯示,當Tex

    Android開發之啟動與廣告

     在我們APP的開發過程中,啟動頁面是繞不開的,廣告頁面說不定,但是不得不說,這兩個介面都是經常要用到的。接下來我記錄一下我的實現過程。專案架構為MVP。    那麼先看看我們的需求和流程:(當然這也是可以根據實際需求改動的)  展示 logo 頁面3秒 服務端可

    Android 啟動黑屏/白屏

    黑白屏問題的原因 activity生命週期先執行onResume()方法,如果此方法中執行了耗時操作,阻塞了主執行緒,很明顯就會出現黑白屏問題.還有就是即使onResume()方法沒有執行還是會出現黑白屏問題,原因就是onCreate()中的下面這行程式碼是個非同步任務,載入介面需要短暫的時間

    Android 快速啟動

    網上方案一大堆 我找了個好使的 1.定義Style <style name="SplashTheme" parent="AppTheme" > <!-- 歡迎頁背景引用剛才寫好的 --> <item name="android:w

    Android App 啟動(Splash)黑/白閃屏現象產生原因與解決辦法

    驚鴻一瞥 微信的啟動頁,相信大家都不陌生。 不知道大家有沒有發現一個現象,微信每次啟動的時候,是直接進入這個啟動頁面。 我的意思是,很多應用,往往會先白屏停頓一下後再進入啟動頁面(Splash)。為了印證這一點,我把手機上所有的App都點了一遍。選幾個例子

    Android設定啟動

    首先在style裡面加入 <style name="ThemeSplash" parent="Theme.AppCompat.Light.NoActionBar"> <!--<item name="android:background">@m

    android 啟動白屏解決方案

    最近在做專案的時候,突然遇到啟動頁白屏不顯示的問題,首先想到的就是圖片大小,仔細檢視 果然,美工給了我一張超大的圖片,我也沒細看就替換上去了,汗! 好吧,既然發現了問題,果斷替換掉圖片,但是,特麼還是白屏(你特麼在逗我!),幾番百度,谷歌,得到如下解決方案:

    Androidandroid開發之splash閃屏的四種實現方式,啟動的實現教程。

    作者:程式設計師小冰,GitHub主頁:https://github.com/QQ986945193 首先給大家看一下今天實現的效果圖(其他三種都差不太多底下詳細介紹): 這個啟動頁實現的方法是四種,兩種是利用handler,其它兩種是利用了動畫的方式。 具體給大家貼一下

    關於android app啟動白屏黑屏和華為手機啟動圖片跳躍閃屏的問題

    1、產生原因           關於點選app圖標出現白屏和黑屏的產生原因,首先要說的就是app的啟動模式:冷啟動(cold start),暖啟動(warm start),熱啟動(lukewarm start)。冷啟動:是指程序從無到有的過程。因為要進行頁面初始化,所以相對

    Android 動態Tab分效果實現

        當前專案使用的是TabHost+Activity進行分頁,目前要做個報表功能,需要在一個Tab頁內進行Activity的切換。比方說我有4個Tab頁分別為Tab1,Tab2,Tab3,Tab4,現在的需求是需要將Tab1內的Activity動態切換。找了很多資料最終使用了ActivityGroup解

    Android 啟動優化之啟動白屏的真正原理

    網上有許多解釋 大牛A說:應用啟動的時候有一個空白的Window,View繪製到另一個Window上,在繪製完畢之後,後一個Window去替換掉前一個Window。 B說:setContentView耗時太久,所以白屏 大牛A之所以會這樣認為,是因為他看過原始碼或者