Android处理程序和Asynctask

时间:2015-09-19 09:34:17

标签: android memory memory-leaks android-asynctask handler

我正在通过我的Android应用程序完成我的任务。现在,我有点困惑。我的问题是: 我有一个Main Class(在这种情况下是一个片段),它的作用(除其他外)是它获取给定人名的图像的url然后从该url下载图像。以下是我计划如何进行的事情:

我在单独的类中有两个asynctask,因为将来我也需要它们用于其他类。我不知道我做了什么,我不希望任何内存泄漏,所以应用程序不会崩溃。如果有人能看一眼并建议我,我会非常感激。

Main Class() {
static MyHandler myhandler;
...
... 
....

static class MyHandler extends Handler {
....
.....
.......
  public void HandleMessage()
 {
 .....
 .......
  if(message == "OK")
    {
     download();
    }
  else if(message = "BMP")
    {
      // I am done
     ....
     ......
    } 
  }
 }


 image_url_fetch(myhandler).execute;

 public void download()
 {
  image_download(myhandler).execute;
 }

 }


 class image_url_fetch exteds Asynctask 
{

 MyHandler myhandler;

 image_url_fetch(MyHandler myhandler)
 {
  this.myhandler = myhandler;
 }
  ...
  ....
  onPostExecute()
 {
myhandler.sendmessage("OK");
 }

}  

class image_download extends Asynctask  
{

 MyHandler myhandler;

 image_download(MyHandler myhandler)
 {
  this.myhandler = myhandler;
 }
  ...
  ....
  onPostExecute() 
 {
  handler.sendMessage(BMP)
    // i have to find a way to send the Bitmap to Main Class
 }

 } 

1 个答案:

答案 0 :(得分:0)

最好同时使用同一个AsyncTask获取Image Url和下载Image而不是两个

代码看起来像简化和更快。

如果您不需要AsyncTask来获取Url ...因为它不会花费足够的时间来检索一系列字符。在下载图像之前,使用逻辑在image_download AsyncTask中获取Url。

P.S:为了更好的可读性和标准,请使用以大写字母开头的类名,避免在类名中使用特殊符号。示例

ImageDownloader.java在不描述

的情况下读取和理解上下文非常棒