android活动流程

时间:2012-11-27 08:22:43

标签: android android-layout

我正在开发一个Android应用程序,这是我面临的一个问题:

我的主菜单会将图像uri的意图传递给另一个活动,在该活动中它将在第二个活动上显示图像。

我处理获取uri的意图并将其转换为onStart()方法中的位图(我将自己编码为覆盖超类方法)。 (这样做是否正确?)

我应该在哪里将图片设置到活动的图片视图上?

我的问题是在处理完图像后,我的应用程序将被强制关闭。但如果我删除onStart()方法,第二个活动将没有错误,但将没有图像显示(因为我处理显示图像)。

当我使用Log.d()方法显示我的程序停止的位置时,它确实显示程序运行直到我处理意图并获得位图(我的程序此刻结束)。

这是我的onStrat()方法的代码:

    protected void onStart()
    {

        Bitmap newBitmap = null;

        Intent imageURI = getIntent();
        Log.d("HERE", "intent received");

        String imageLoc = imageURI.getExtras().getString("IMAGE_URI");
        Log.d("HERE", imageLoc);

        Uri imageLocation = Uri.parse(imageLoc);
        Log.d("HERE", "Uri reated");

        try 
        {
        newBitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageLocation);
    } 
        catch (FileNotFoundException e) 
        {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 

        catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

        Log.d("HERE", "bitmap created");


}
我弄乱了一些东西,最后找到了解决方案。感谢异步任务信息,它确实加快了我的过程。

谢谢。

2 个答案:

答案 0 :(得分:0)

处理意图并获取uri并在onResume()中显示图像,它将适合您。

答案 1 :(得分:0)

  

我处理获取uri的意图并将其转换为位图   onStart()方法(我将自己编码为覆盖超类   方法)。 (这样做是否正确?)

创建Activity时,应将任何CPU密集型操作放在单独的线程中。最常见的方法是使用AsyncTask来处理位图。在从onCreate()获取额外信息后,您应该以{{1​​}}方式开始执行。

  

我应该在哪里将图像设置到活动的图像视图上?

IMO,这是最好的选择 - Intent <{1}}

的方法