انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
کش برای وب ویو

کش برای وب ویو

#2
(۱۳۹۴/۱۲/۰۸, ۱۰:۰۲ ق.ظ)sohrabjam نوشته: سلام دوستان
 چگونه میوشد برای وب ویو کش درست کرد؟

یعنی وفتی کاربر یکبار وارود وب ویو می شود وبارگذاری انجام میوشد وبعد زا خروج دوباره به بارگذاری مجدد محتوی داحل وب ویو از اینترنت نباشد.

سلام
اگه اشتباه نکرده باشم شما میخواید یه حافظه درست کنید برای webView که در اجرای دوباره آن به آخرین آدرسی که درونش بوده بره.
شما برای این کار دوتا اکتیویتی میخواهید. و یک کلاس از نوع Application  که کار ذخیره را انجام دهد.

قبل از هرکاری دسترسی های زیر رو به برنامتون بدید
کد پی‌اچ‌پی:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 
 <uses-permission android:name="android.permission.INTERNET"/>
 
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 


بعد یک کلاس به ایجاد کنید و اون رو از Application مشتق کنید. مثل کلاس زیر که بعنوان نمونه میذارمش
کد پی‌اچ‌پی:
import java.io.File;
 
import android.app.Application;
import android.os.Environment;
 
public class 
ApplicationExt extends Application
{
 
 protected File extStorageAppBasePath;
 
  
  protected File extStorageAppCachePath
;
 
 
 @Override
  public void onCreate
()
 
 {
 
   super.onCreate();
 
 
   if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()))
 
   {
 
     File externalStorageDir Environment.getExternalStorageDirectory();
 
        
      if 
(externalStorageDir != null)
 
     {
 
       extStorageAppBasePath = new File(externalStorageDir.getAbsolutePath() +
 
         File.separator "Android" File.separator "data" +
 
         File.separator getPackageName());
 
     }
 
  
      if 
(extStorageAppBasePath != null)
 
     {
 
       extStorageAppCachePath = new File(extStorageAppBasePath.getAbsolutePath() +
 
         File.separator "cache");
 
  
        boolean isCachePathAvailable 
true;
 
        
        if 
(!extStorageAppCachePath.exists())
 
       {
 
         isCachePathAvailable extStorageAppCachePath.mkdirs();
 
       }
 
        
        if 
(!isCachePathAvailable)
 
       {
 
         extStorageAppCachePath null;
 
       }
 
     }
 
   }
 
 }
 
  
  
@Override
  public File getCacheDir
()
 
 {
 
    
    if 
(extStorageAppCachePath != null)
 
   {
 
     return extStorageAppCachePath;
 
   }
 
   else
    
{
 
     return super.getCacheDir();
 
   }
 
 }

اکتیویتی اول را بصورت زیر تغیر بدید
کد پی‌اچ‌پی:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical">
 
  <Button android:id="@+id/startSecondActivityBtn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:text="Start second activity"/>
 
  <WebView android:id="@+id/webView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"/>
 
</LinearLayout> 


و کلاس متناطر آن دستورات زیر را پیاده سازی کنید

کد پی‌اچ‌پی:
import java.io.File;
 
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
 
public class 
MainActivity extends Activity implements OnClickListener
{
 
 protected WebView webView;
 
 protected Button startSecondActivityBtn;
 
  
  
@Override
  public void onCreate
(Bundle savedInstanceState)
 
 {
 
   super.onCreate(savedInstanceState);
 
   setContentView(R.layout.main);
 
    
    webView 
= ((WebView)findViewById(R.id.webView));
 
   startSecondActivityBtn = ((Button)findViewById(R.id.startSecondActivityBtn));
 
 
   startSecondActivityBtn.setOnClickListener(this);
 
    
    webView
.getSettings().setSupportZoom(true);
 
   webView.getSettings().setBuiltInZoomControls(true);
 
   webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
 
   webView.setScrollbarFadingEnabled(true);
 
   webView.getSettings().setLoadsImagesAutomatically(true);
 
 
   webView.setWebViewClient(new WebViewClient());
 
 
   webView.loadUrl("http://www.google.com");
 
 }
 
 
 @Override
  protected void onDestroy
()
 
 {
 
   webView.clearCache(true);
 
    
    super
.onDestroy();
 
 }
 
  
  
@Override
  public File getCacheDir
()
 
 {
 
    
    return getApplicationContext
().getCacheDir();
 
 }
 
 
 @Override
  public void onClick
(View v)
 
 {
 
   if (== startSecondActivityBtn)
 
   {
 
     Intent intent = new Intent(thisSecondActivity.class);
 
     startActivity(intent);
 
   }
 
 }



حالا اکتیوتی دوم رو بصورت زیر تغییر بره
کد پی‌اچ‌پی:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical">
 
  <WebView android:id="@+id/webView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"/>
 
</LinearLayout> 


و در کلاس متناطر با کدهای زیر را قرار بدید

کد پی‌اچ‌پی:
import java.io.File;
 
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
 
public class 
SecondActivity extends Activity
{
 
 protected WebView webView;
 
  
  
@Override
  public void onCreate
(Bundle savedInstanceState)
 
 {
 
   super.onCreate(savedInstanceState);
 
   setContentView(R.layout.second);
 
    
    webView 
= ((WebView)findViewById(R.id.webView));
 
    
    webView
.getSettings().setSupportZoom(true);
 
   webView.getSettings().setBuiltInZoomControls(true);
 
   webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
 
   webView.setScrollbarFadingEnabled(true);
 
   webView.getSettings().setLoadsImagesAutomatically(true);
 
 
   webView.setWebViewClient(new WebViewClient());
 
 
   webView.loadUrl("http://www.google.com");
 
 }
 
 
 @Override
  public File getCacheDir
()
 
 {
 
    
    return getApplicationContext
().getCacheDir();
 
 }



از برنامه اجرا بگیرید. ببینید نتیجه چطوریه. امیدوارم همون چیزی باشه که شما میخواهید.
نکته ای که باید بگم تا حد امکان از اندروید های پایین تر از 3 استفاده نکنید. تا نتیجه به خوبی نمایش داده بشه

موفق باشید
Iran  ErfanMahigir Iran
پاسخ
 سپاس شده توسط sohrabjam


پیام‌های این موضوع
کش برای وب ویو - توسط sohrabjam - ۱۳۹۴/۱۲/۰۸, ۱۰:۰۲ ق.ظ
RE: کش برای وب ویو - توسط e.mahi - ۱۳۹۴/۱۲/۰۸, ۰۲:۱۷ ب.ظ
RE: کش برای وب ویو - توسط sohrabjam - ۱۳۹۴/۱۲/۰۸, ۰۶:۴۲ ب.ظ
RE: کش برای وب ویو - توسط e.mahi - ۱۳۹۴/۱۲/۰۹, ۰۱:۱۴ ق.ظ
RE: کش برای وب ویو - توسط sohrabjam - ۱۳۹۴/۱۲/۱۱, ۰۸:۰۸ ق.ظ
RE: کش برای وب ویو - توسط sohrabjam - ۱۳۹۴/۱۲/۱۲, ۰۹:۴۳ ب.ظ
RE: کش برای وب ویو - توسط mahdi10539 - ۱۳۹۴/۱۲/۱۳, ۰۵:۵۵ ب.ظ

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان