zoukankan      html  css  js  c++  java
  • android 在finish()的时候不是立刻调用onDestory,怎样才能在finish后立刻回调onDestory?

    ============问题描述============


            private MyAIDLService myAIDLService; 
    private ServiceConnection connection = new ServiceConnection() {  
      
            @Override  
            public void onServiceDisconnected(ComponentName name) {  
            }  
      
            @Override  
            public void onServiceConnected(ComponentName name, IBinder service) {  
                myAIDLService = MyAIDLService.Stub.asInterface(service);  
                ListView list = (ListView) findViewById(R.id.weidingdanList); //加载列表
        setListShow(list); //加载列表
            }  
        };  

    public void onCreate(Bundle savedInstanceState) {//重写onCreate方法
            
            super.onCreate(savedInstanceState);  
            requestWindowFeature(Window.FEATURE_NO_TITLE);  //不显示最上面的条
            setContentView(R.layout.weidingdan);  
            
            setList();//显示一个列表
            
            fanhui = (ImageButton) findViewById(R.id.weidingdanFanhuiButton);
    fanhui.setImageResource(R.drawable.fanhui);

    fanhui.setOnClickListener(new Button.OnClickListener()  
            {  
                @Override  
                public void onClick(View arg0) {  
                 unbindService(connection);  
                 finish();
                }   
            });  
    }

    private void setList(){ //列表这里的wPhoto为一个内容为“请稍后”的图片
     ListView list = (ListView) findViewById(R.id.weidingdanList); 

    wPhoto = (ImageView) findViewById(R.id.wphoto);//显示图片
    wPhoto.setImageResource(R.drawable.wphoto);//显示图片
    Intent intent = new Intent("com.example.servicetest.MyAIDLService");  //调用service加载列表
                    bindService(intent, connection, BIND_AUTO_CREATE);  //调用service加载列表
    }


    private void setListShow(ListView list){
    ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>(); 
    listItem.clear();

        HashMap<String, Object> map;
                        map  = new HashMap<String, Object>();  
                        map.put("ItemTitle", "aaa");  
                        map.put("ItemText", "aaa");  
                        map.put("Time", "aaa");
                        map.put("Image", R.drawable.kong);
                        listItem.add(map); 

        map = new HashMap<String, Object>();  
        map.put("ItemTitle", "bbb");  
                map.put("ItemText", “bbb”);  
                map.put("Time", “bbb”);
                map.put("Image",  R.drawable.kong);
                listItem.add(map); 
    }
    }

    //生成适配器的Item和动态数组对应的元素  
            SimpleAdapter listItemAdapter = new SimpleAdapter(this,listItem,//数据源   
                R.layout.list_items,//ListItem的XML实现       
                new String[] {"ItemTitle", "ItemText", "Time", "Image"},   
                new int[] {R.id.weidingdanTitle,R.id.weidingdanText,R.id.weidingdanTime,R.id.weidingdanFrontImage}  
            );  

            //添加并且显示  
            list.setAdapter(listItemAdapter); 
            closeAnim();//让图片消失
    }


    private void closeAnim(){
                    Animation animationScale; 
    animationScale = new ScaleAnimation(1f, 0f, 1f, 0f Animation.RELATIVE_TO_SELF, 0.5f,Animation.RELATIVE_TO_SELF, 0.5f);
    animationScale.setDuration(5);
    animationScale.setFillAfter(true);
    wPhoto.startAnimation(animationScale);
    }



    这个程序是因为加载list较慢,所以,先显示一个“请稍后”的图片,然后加载出list后,图片消失。

    上面的程序,在点击返回键后,会退回到上一个activity,到这里都是没问题的。可是,再次进入这个activity的时候,会先加载好list,然后显示“请稍后”的图片,然后图片消失。

    我猜测是因为finish()后,没有执行onDestory(),才会有这样的效果。有没有大神能帮我解决一下这个问题啊??!!
    或者能不能再执行finish()后立刻执行onDestory()?

    帮帮忙吧!!!

    ============解决方案1============


    那你在OnResume的时候处理下就好了啊。

    ============解决方案2============


    finsh不是也要执行完OnResume,onstop,ondestory么

    ============解决方案3============


    问题不在于finish destroy 
    你想实现的东西 完全不需要考虑这些东西 ,还是service 不是用在这个用途上。
    仔细看看写别人demo参考下, 不要想当然。

    ============解决方案4============


    引用 5 楼 sirenyizhi 的回复:
    Quote: 引用 3 楼 davidleen29 的回复:

    问题不在于finish destroy 
    你想实现的东西 完全不需要考虑这些东西 ,还是service 不是用在这个用途上。
    仔细看看写别人demo参考下, 不要想当然。


    你知道这个怎么写么?我看书上说service可以执行以下耗时的程序,可是没有写怎么写。。。。。我也不会用。。。还是新手,所以求大神指导!

    service也是运行在主线程,怎么可以去执行耗时操作呢,耗时操作可以自己新建线程或者用系统的AsyncTask
  • 相关阅读:
    成功在RedFlag Linux 5.0桌面版安装oralce10
    ORACLE ebs 11.5.10 for linux 安装心得
    C#讀取轉換Excel檔案的優化(源代碼)
    [轉]SAP BASIS经验十年James Yen
    SAP Basis 常用事务代码
    健康指南:人体十大最佳黄金时间
    中國人使筷子的十二種忌諱
    SAP basis 相关设定
    技术出身,如何做好项目经理?
    [轉貼]奋斗5年从月薪3500到700万!
  • 原文地址:https://www.cnblogs.com/lianxu61/p/4044464.html
Copyright © 2011-2022 走看看