0

我需要从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做精细且正确下载图像,但第二部分从在下载图像,从而该图像将被破坏,因此导致异常,其开始的意图的代码。

如何让意图开始一次图像将准备好并完成下载?

+0

你在哪里下载的形象呢?我没看到电话。 – Kaediil 2012-07-25 13:39:40

+0

在类MyAsnyc和这个呼叫 新的MyAsnyc().execute(); – Start 2012-07-25 13:42:28

+0

你能显示你的清单文件吗? – 2012-07-25 13:51:13

回答

1

我想你应该的AsyncTask其具有的功能,如onPostExecuteonPreExecute等,您可以轻松地前和下载后控制的东西的工作。

0

您应该将Intent的起始码放入AsyncTaskonPostExecute()方法中。这将确保代码在正确的时间执行,并且使异常处理更容易。希望这可以帮助。

+0

但这会在此声明中产生错误 Intent intent1 = new Intent(Test_PROJECTActivity.this,DecodeActivity.class); – Start 2012-07-25 13:46:31

+0

如果我按照你说的做 这个部分有错误 当在AsyncTask的onPostExecute()方法写这个时 – Start 2012-07-25 13:47:35

+0

我该如何处理? – Start 2012-07-25 13:47:54

1
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从另一个活动的问题,通过本次活动的contextAsyncTask类。

从你的第一个Activity,调用扩展AsyncTask这样的类:

new YourClassName(getApplicationContext()).execute(""); 
+0

后的意图,你说 “” \t \t意向intent1 =新意图(Test_PROJECTActivity.this,DecodeActivity.class); “” – Start 2012-07-25 14:12:06

+0

和我有这个错误 “”类型Test_PROJECTActivity没有外围实例是在范围访问“” – Start 2012-07-25 14:12:58

+0

请看看我的编辑。这对你有帮助吗? – 2012-07-25 17:26:32