urlandroid
⑴ android webview載入url怎麼緩存
當我們載入Html時候,會在我們data/應用package下生成database與cache兩個文件夾:
我們請求的Url記錄是保存在webviewCache.db里,而url的內容是保存在webviewCache文件夾下.
WebView中存在著兩種緩存:網頁數據緩存(存儲打開過的頁面及資源)、H5緩存(即AppCache)。
一、網頁緩存
1、緩存構成
/data/data/package_name/cache/
/data/data/package_name/database/webview.db
/data/data/package_name/database/webviewCache.db
綜合可以得知 webview 會將我們瀏覽過的網頁url已經網頁文件(css、圖片、js等)保存到資料庫表中
緩存模式(5種)
LOAD_CACHE_ONLY: 不使用網路,只讀取本地緩存數據
LOAD_DEFAULT: 根據cache-control決定是否從網路上取數據。
LOAD_CACHE_NORMAL: API level 17中已經廢棄, 從API level 11開始作用同LOAD_DEFAULT模式
LOAD_NO_CACHE: 不使用緩存,只從網路獲取數據.
LOAD_CACHE_ELSE_NETWORK,只要本地有,無論是否過期,或者no-cache,都使用緩存中的數據。
如:www.taobao.com的cache-control為no-cache,在模式LOAD_DEFAULT下,無論如何都會從網路上取數據,如果沒有網路,就會出現錯誤頁面;在LOAD_CACHE_ELSE_NETWORK模式下,無論是否有網路,只要本地有緩存,都使用緩存。本地沒有緩存時才從網路上獲取。
www.360.com.cn的cache-control為max-age=60,在兩種模式下都使用本地緩存數據。
總結:根據以上兩種模式,建議緩存策略為,判斷是否有網路,有的話,使用LOAD_DEFAULT,無網路時,使用LOAD_CACHE_ELSE_NETWORK。
java">設置WebView緩存模式
privatevoidinitWebView(){
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setRenderPriority(RenderPriority.HIGH);
mWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);//設置緩存模式
//開啟DOMstorageAPI功能
mWebView.getSettings().setDomStorageEnabled(true);
//開啟databasestorageAPI功能
mWebView.getSettings().setDatabaseEnabled(true);
StringcacheDirPath=getFilesDir().getAbsolutePath()+APP_CACAHE_DIRNAME;
//StringcacheDirPath=getCacheDir().getAbsolutePath()+Constant.APP_DB_DIRNAME;
Log.i(TAG,"cacheDirPath="+cacheDirPath);
//設置資料庫緩存路徑
mWebView.getSettings().setDatabasePath(cacheDirPath);
//設置ApplicationCaches緩存目錄
mWebView.getSettings().setAppCachePath(cacheDirPath);
//開啟ApplicationCaches功能
mWebView.getSettings().setAppCacheEnabled(true);
}
清除緩存
/**
*清除WebView緩存
*/
publicvoidclearWebViewCache(){
//清理Webview緩存資料庫
try{
deleteDatabase("webview.db");
deleteDatabase("webviewCache.db");
}catch(Exceptione){
e.printStackTrace();
}
//WebView緩存文件
FileappCacheDir=newFile(getFilesDir().getAbsolutePath()+APP_CACAHE_DIRNAME);
Log.e(TAG,"appCacheDirpath="+appCacheDir.getAbsolutePath());
FilewebviewCacheDir=newFile(getCacheDir().getAbsolutePath()+"/webviewCache");
Log.e(TAG,"webviewCacheDirpath="+webviewCacheDir.getAbsolutePath());
//刪除webview緩存目錄
if(webviewCacheDir.exists()){
deleteFile(webviewCacheDir);
}
//刪除webview緩存緩存目錄
if(appCacheDir.exists()){
deleteFile(appCacheDir);
}
}
⑵ Android瀏覽器根據不同URL跳轉到不同APP是怎麼做到的
Android 中Activity之間的轉跳是通過Intent來傳遞數據的,可以將URL放進Intent中,實現轉跳後載入URL。 Android中intent.putExtra(); 是用於Intent傳遞數據的。 Intent是一種運行時綁定(run-time binding)機制,它能在程序運行過程中連接兩個不同的組件。通過Intent,你的程序可以向Android表達某種請求或者意願,Android會根據意願的內容選擇適當的組件來完成請求。比如,有一個Activity希望打開網頁瀏覽器查看某一網頁的內容,那麼這個Activity只需要發出WEB_SEARCH_ACTION給Android,Android就會根據Intent的請求內容,查詢各組件注冊時聲明的IntentFilter,找到網頁瀏覽器的Activity來瀏覽網頁。 Android的三個基本組件——Activity,Service和Broadcast Receiver——都是通過Intent機制激活的,不同類型的組件有不同的傳遞Intent方式: 要激活一個新的Activity,或者讓一個現有的Activity做新的操作,可以通過調用Context.startActivity()或者Activity.startActivityForResult()方法。 要啟動一個新的Service,或者向一個已有的Service傳遞新的指令,調用Context.startService()方法或者調用Context.bindService()方法將調用此方法的上下文對象與Service綁定。 Context.sendBroadcast()、Context.sendOrderBroadcast()、Context.sendStickBroadcast()這三個方法可以發送Broadcast Intent。發送之後,所有已注冊的並且擁有與之相匹配IntentFilter的BroadcastReceiver就會被激活。 Intent一旦發出,Android都會准確找到相匹配的一個或多個Activity,Service或者BroadcastReceiver作響應。所以,不同類型的Intent消息不會出現重疊,即Broadcast的Intent消息只會發送給BroadcastReceiver,而決不會發送給Activity或者Service。由startActivity()傳遞的消息也只會發給Activity,由startService()傳遞的Intent只會發送給Service。
⑶ Android 視頻開發中如何通過url或者本地視
第一步:將bitmap轉換成drawable對象,並設置給surfaceView視頻播放窗口作為背景圖片
//通過getVideoThumbnail方法取得視頻中的第一幀圖片,該圖片是一個bitmap對象Bitmap bitmap=getVideoThumbnail(String url);//將bitmap對象轉換成drawable對象Drawable drawable=new BitmapDrawable(bitmap);//將drawable對象設置給視頻播放窗口surfaceView控制項作為背景圖片surfaceView.setBackgroundDrawable(drawable);123456
第二部分:通過url網址或者本地文件路徑獲得視頻的第一幀圖片
public Bitmap getVideoThumbnail(String url) {
Bitmap bitmap = null;//MediaMetadataRetriever 是android中定義好的一個類,提供了統一//的介面,用於從輸入的媒體文件中取得幀和元數據;
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
try {
//()根據文件路徑獲取縮略圖//retriever.setDataSource(filePath);
retriever.setDataSource(url, new HashMap()); //獲得第一幀圖片
bitmap = retriever.getFrameAtTime();
}
catch(IllegalArgumentException e) {
e.printStackTrace();
}
catch (RuntimeException e) {
e.printStackTrace();
}
finally {
try {
retriever.release();
}
catch (RuntimeException e) {
e.printStackTrace();
}
}
Log.v("bitmap", "bitmap="+bitmap); return bitmap;
}
⑷ android本地mipmap圖片轉url、絕對路徑轉URL
(一)mipmap圖片轉url,參數 resId為 直接傳入R.mipmap.img
(二)絕對路徑轉URL。 it.compressPath為本地圖片的絕對路徑
⑸ android studio 新建一個url 為什麼要輸入網址和其他的東西
URL就是下載鏈接.有的任務是直接發給下載鏈接給你.比如FHP.或者是電驢.而BT任務是種子.你只要吧下載鏈接復制到URL里.然後點確定.如果下載鏈接能用.就會開始下載.就會顯示出.文件大小.下載速度.以及剩餘時間.如果只是一個未知文件.沒有連接數.也沒有速度.就是下載鏈接有問題.一般情況為復制的鏈接不對.總新復制下.是不是少復制了字元.或者開頭的地方沒有選對.網頁下載一般為開頭.下載形式不同.鏈接不同.所以只坐參考.一般情況在網頁上電鏈接就可以開始下載.只有給你一個網址的情況是需要你自己新建任務的.所以上述僅作參考!