2011-02-26 45 views
0

下面是說明問題的簡單代碼片段。
爲什麼記錄在方法「onActivityResult」中的字段「tag」的值不是「tag_modified」?
我也試過其他異步調用「startActivityForResult」,但沒有這樣的問題存在。
這個問題只發生在我的Moto Milestone上,但HTC G7上的一切都很順利。Motorola Milestone上的圖像捕獲問題

public class HelloSnapshot extends Activity { 

     private static Logger logger = Logger.getLogger(HelloSnapshot.class.getName()); 

     final int REQUESTCODE_SNAPSHOT = 1; 

     String tag = "tag_initial"; 

     public void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 

       Button button = new Button(this); 
       button.setText("BUTTON"); 
       button.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 

           tag = "tag_modified"; 

           Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
           startActivityForResult(intent, REQUESTCODE_SNAPSHOT); 
         } 
       }); 

       setContentView(button, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
     } 

     public void onActivityResult(int requestCode, int resultCode , Intent data) { 
       switch (requestCode) { 
       case REQUESTCODE_SNAPSHOT: 
         if (resultCode == Activity.RESULT_OK) { 

           logger.info(tag); 

         } 
         break; 
       } 
     } 
} 

回答

0

I`ve發現了這件事......

某些Android OS殺快照調用活動,以避免內存相關的異常。 所以,我必須通過方法onSaveInstanceState保存所有狀態,並在調用活動再次構建時檢索它們。另外,我還發現,存儲在內存中的所有信息都容易被擦除,就像那些Singleton對象一樣。因此,我必須通過一些持久性存儲方法進行保存,並在稍後恢復。