標籤: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?