如何通知Picasso链接中的图像发生了变化?

时间:2014-08-22 18:06:23

标签: android picasso

我正在使用毕加索库来加载图片。 但是在我的应用程序中,用户可以拥有个人资料图片,图片链接也是不变的...毕加索不知道图像已经改变......

我尝试使用:.skipMemoryCache()但它不是一个理想的解决方案......

有没有办法检查使用毕加索在同一个链接中是否有新图片?谢谢!

4 个答案:

答案 0 :(得分:4)

显然,Picasso的当前(2.3.2)版本中没有API来实现这一目标(但这是一项正在进行的工作 - 请参阅此bug)。

除此之外,如果您可以控制服务器端,您可能需要考虑您的设计决策,以便在常量URL处提供更改的个人资料图片。

另一种方法是:在您检索的个人资料信息中包含当前的个人资料图片网址。这样,您的缓存可以使用缓存的图像 - 一旦配置文件信息提供了新的URL,Picasso就会获取它。在所有其他情况下,毕加索可以利用缓存。

答案 1 :(得分:3)

我从这个link

得到了答案

更改您的网址,如下所示:

<?php

include "pdo.php"; if(isset($_POST["submit"]) AND isset($_POST["ForgotPassword"])) {

$email = $_POST["ForgotPassword"];
// Check to see if a user exists with this e-mail
$sql = "SELECT email FROM account WHERE email=:email";
$stmt = $db->prepare($sql);
$stmt->execute(array(":email"=>$email));
$items = $stmt->fetchAll();
$db = null;
 foreach($items as $data){
       if($data["email"] == $email){
        // Create a unique salt. This will never leave PHP unencrypted.
        $salt = "498#2D83B631%3800EBD!801600D*7E3CC13";

        // Create the unique user password reset key
        $password = hash('sha256', $salt.$email);

        // Create a url which we will direct them to reset their password
        $pwrurl = "http://student.sps-prosek.cz/~kocvaja14/Project/SelfMade/templates/script/recovery_password.php?q=".$password;

        // Mail them their key
        $mailbody = "Dobrý den,\n\nJestli tento email nepatří vám, prosím, ignorujte jej. Byla vytvořena žádost o obnovení hesla na webové stránce http://student.sps-prosek.cz/~kocvaja14/SelfMade/\n\nPro obnovení hesla klikněte na odkaz níže. \n\nThanks,\nThe Administration";
        mail($email, "http://student.sps-prosek.cz/~kocvaja14/Project/SelfMade/index.php - Password Reset", $mailbody);
        echo "Your password recovery key has been sent to your e-mail address.";

} else
    echo "No user with that e-mail address exists.";  
      } }?>
这对我有用。感谢

答案 2 :(得分:3)

lomowner

答案 3 :(得分:1)

一种解决方案是使缓存失效,如此

Picasso.with(context).invalidate(imagePath);

另一种强制下载图像的方法,然后将其缓存以供后续在代码中用作mentioned

Picasso.with(context)
        .load(imagePath)
        .networkPolicy(NetworkPolicy.NO_CACHE)
        .into(userAvatar);