如何保存网页信息



我希望我的应用程序每天只检查一次某个网页,所以我希望数据被保存并在再次启动应用程序时重新加载。我按照本教程进行操作,但我无法使用MainActivity extends AppCompatActivity保存结果:

String url = "https://en.wikipedia.org/wiki/Main_Page";
SharedPreferences data;
SharedPreferences.Editor dataEditor;
String sDate = date.getString("date", "");
DateFormat df = new SimpleDateFormat("MMMM  d");
String date = df.format(Calendar.getInstance().getTime());
if(sDate != date){                             // <-- this does not work
   new Date().execute();
}

Date extends AsyncTask<Void, Void, Void>:

Document document = Jsoup.connect(url).get();
Elements date = document.select("div#mp-otd p b");
String sDate = date.getText();
dataEtitor.setString("date", sDate)
dataEtitor.commit;

"Date extensions AyncTask"类总是开始。

editor.commit()用于

保存对共享首选项的更改。

在 setString 之后添加以下代码行

dataEtitor.commit(); // commit changes

共享首选项示例如下

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0); // 0 - for private mode
Editor editor = pref.edit();

存储数据

editor.putBoolean("key_name", true); // Storing boolean - true/false
editor.putString("key_name", "string value"); // Storing string
editor.putInt("key_name", "int value"); // Storing integer
editor.putFloat("key_name", "float value"); // Storing float
editor.putLong("key_name", "long value"); // Storing long
editor.commit(); // commit changes

检索数据

pref.getString("key_name", null); // getting String
pref.getInt("key_name", null); // getting Integer
pref.getFloat("key_name", null); // getting Float
pref.getLong("key_name", null); // getting Long
pref.getBoolean("key_name", null); // getting boolean

清除或删除数据

editor.remove("name"); // will delete key name
editor.remove("email"); // will delete key email
editor.commit(); // commit changes
editor.clear();
editor.commit(); // commit changes

你用!(sDate.equals(date)代替sDate != date,因为字符串是新的,所以它们不能相互比较。

最新更新