android 在finish()的時候不是立刻調用onDestory,怎樣才能在finish後立刻回調onDestory?

來源:互聯網
上載者:User

標籤:des   android   io   os   ar   sp   資料   on   art   

============問題描述============


        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

android 在finish()的時候不是立刻調用onDestory,怎樣才能在finish後立刻回調onDestory?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.