完成从url下载图像后如何启动意图?
问题描述:
我需要从URL完成图像的下载后开始我的意图,而不需要应用程序本身的用户采取任何行动。完成从url下载图像后如何启动意图?
这是我的活动,首先下载图像,然后它将开始意图。
//download image then start decod intent
public void download(View v)
{
//first download image
new MyAsnyc().execute();
//then start this intent
final Handler handler=new Handler();
final Runnable r = new Runnable()
{
public void run()
{
{
Intent intent1 = new Intent(Test_PROJECTActivity.this, DecodeActivity.class);
File path = Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
File file = new File(path, "DemoPictureX.png");
Log.d("file", file.getAbsolutePath());
intent1.putExtra("file", file.getAbsolutePath());
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
startActivity(intent1);
}
}
};
handler.postDelayed(r, 5000);
}
的MyAsnyc做精细且正确下载图像,但第二部分从在下载图像,从而该图像将被破坏,因此导致异常,其开始的意图的代码。
如何让意图开始一次图像将准备好并完成下载?
答
我想你应该的AsyncTask其具有的功能,如onPostExecute,onPreExecute等,您可以轻松地前和下载后控制的东西的工作。
答
您应该将Intent
的起始码放入AsyncTask
的onPostExecute()
方法中。这将确保代码在正确的时间执行,并且使异常处理更容易。希望这可以帮助。
答
public class YourClassName extends AsyncTask<String, Void, String > {
protected void onPreExecute() { }
protected String doInBackground(String... params) {}
protected void onPostExecute(String result) {}
}
从onPostExecute
方法这样做你所有下载的东西在doInBackground
方法,并开始一个新的Intent
:
Intent i = new Intent(ClassName.this, TheClassToStart.class);
context.startActivity(i);
,如果你想要把图像到新的活动简单的做到这一点:
i.putExtras(...)
希望得到这个帮助!
关于与没有外围实例
如果开始的AsyncTask从另一个活动的问题,通过本次活动的context
到AsyncTask
类。
从你的第一个Activity
,调用扩展AsyncTask
这样的类:
new YourClassName(getApplicationContext()).execute("");
你在哪里下载的形象呢?我没看到电话。 – Kaediil 2012-07-25 13:39:40
在类MyAsnyc和这个呼叫 新的MyAsnyc().execute(); – Start 2012-07-25 13:42:28
你能显示你的清单文件吗? – 2012-07-25 13:51:13