【问题标题】:how to runnable image using handler如何使用处理程序运行图像
【发布时间】:2013-08-28 03:15:42
【问题描述】:

我是新手,我有一个问题,我想用函数处理程序运行图像,但我失败了, 喜欢什么代码可以在此代码上运行图像?可以帮我解决这个问题吗?

Intent intent = getIntent();

 String url= intent.getStringExtra("URL");
tombol2 = (Button) findViewById(R.id.button2);

iv = (ImageView) findViewById(R.id.imageView1);
Drawable d1=LoadImageFromWebOperations(url);
iv.setImageDrawable(d1);

}
private Drawable LoadImageFromWebOperations(String url)
        {
             try
             {
                 InputStream is = (InputStream) new URL(url).getContent();
                 Drawable d = Drawable.createFromStream(is, "src name");
                 return d;
        }catch (Exception e) {
                 System.out.println("Exc="+e);
                 return null;
             }  
        }
   }

【问题讨论】:

  • 强制关闭是否会导致应用崩溃?
  • 如果我在内部代码中给出代码处理程序我得到错误,我不知道如何使该图像可以运行
  • 你做得不对。如果你是从 url 获取的,你应该使用线程或异步任务
  • 但是怎么做呢?我不明白使用 asyntask,你能告诉我吗?
  • developer.android.com/reference/android/os/AsyncTask.html。为什么不检查文档,如果您不理解,请返回并再次询问

标签: android image stream handler runnable


【解决方案1】:

如果你想使用 Handler,如下所示。

但我看到您正在 ui 线程上执行与网络相关的操作,这在蜂窝后是不可能的。您必须使用线程或异步任务。你会得到NetworkOnMainThreadException

http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html

我建议你使用threadAsyncTask

http://developer.android.com/reference/android/os/AsyncTask.html

Handler m_handler;
Runnable m_handlerTask ;  
m_handler = new Handler();   
m_handlerTask = new Runnable()
{
  @Override 
  public void run() { 

    // do something  
    m_handler.postDelayed(m_handlerTask, 1000);    

  }
  };
 m_handlerTask.run();

【讨论】:

  • 也许你有别的答案?
【解决方案2】:

它已修复,只需在 LoadImageWebOperations 之前给这个可运行对象

runnable = new Runnable() {

        @Override
        public void run() {
            try {
                LoadImageFromWebOperations(d1);
            } catch (Exception e) {
                e.getStackTrace();
            }
            new Handler().postDelayed(runnable, 10000);
        }
    };
    new Handler().postDelayed(runnable, 10000);     
}

【讨论】:

  • 当我已经回答并且它对你有用时,你为什么要回答你的问题。它不是重复的吗?而且您正在创建两个处理程序。
  • 它工作正常,不重复,两个处理程序没关系
  • 你不需要两个处理程序
猜你喜欢
  • 2012-12-08
  • 1970-01-01
  • 2018-07-27
  • 2013-11-26
  • 1970-01-01
  • 1970-01-01
  • 2020-11-07
  • 1970-01-01
  • 2012-02-02
相关资源
最近更新 更多