У меня очень странная ситуация ... (для меня)
Например, 2 объекта,
1 - логический элемент активности, который называется isInPage,
2 - это статический растровый объект с именем bmpPhoto.
Когда я занимаюсь своей деятельностью под названием FacebookShareActivity
isInPage будет истинным, пока я не выйду из этого действия,
bmpPhoto будет предоставлена фотография.
После onCreare () и onResume () не выполняется никакого кода, пока пользователь не нажмет какой-нибудь графический интерфейс.
Я закрыл экран нажатием аппаратной кнопки питания и, возможно, подождал 5 или 10 минут.
ОК, теперь я снова нажимаю porwe, чтобы разбудить телефон, разблокировать экран,
и моя FacebookShareActivity возвращается на первый план.
И я нажимаю кнопку GUI, чтобы проверить значение переменной через Logcat, там написано:
isInPage = ложь;
И я забыл значение bmpPhoto, но в моем графическом интерфейсе фотография просто исчезла,
больше не отображается ...
Как это случилось?
И это происходит не каждый раз, когда я это делаю ......
Что если я переопределю onSaveInstanceState (Bundle saveInstanceState) и
onRestoreInstanceState (Bundle saveInstanceState)?
Это поможет?
А что насчет растрового объекта?
Все еще не знаю, как это случилось ...
Я что-то пропустил?
Мне очень нужна твоя помощь, пожалуйста, всем ~
Следующее является частью моего кода, довольно долго ...
«IsPageRunning» и «bmp» иногда менялись, когда возвращались с рабочего стола, но не каждый раз.
public class FacebookShareActivity extends Activity
{
private Bundle b=null;
private Bitmap bmp=null;
private boolean isFacebookWorking=false;
private boolean isPageRunning=true; //This value sometime changed when back from desktop, but not every time
protected void onCreate(Bundle savedInstanceState)
{
Log.i(Constants.TAG, "ON Facebook Share create......");
super.onCreate(savedInstanceState);
setContentView(R.layout.facebook_share);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
}
private void initUI()
{
btnBack=(Button)findViewById(R.id.btnBack);
btnBack.setOnClickListener(new ButtonClickHandler());
formImage=(RelativeLayout)findViewById(R.id.form_image);
formImage.setDrawingCacheEnabled(true);
btnShare=(Button)findViewById(R.id.btnShare);
btnShare.setOnClickListener(new ButtonClickHandler());
txtIntroText=(TextView)findViewById(R.id.txtIntroText);
txtIntroText.setOnClickListener(new ButtonClickHandler());
txtIntroText.setText(getUploadInImageText());
photo=(ImageView)findViewById(R.id.photo);
bmp=Constants.PROFILE.getName().getPhoto();
if(bmp!=null)
{photo.setImageBitmap(bmp);} //bmp wouldn't be null, it filled by some other activity before
}
@Override
protected void onResume()
{
super.onResume();
Log.i(Constants.TAG, "Trying to set UI on resume...");
b=getIntent().getExtras();
// ...
// ... Get some String value passed from prev activity
facebook=new Facebook("123456789012345"); //Test
asyncFacebook=new AsyncFacebookRunner(facebook);
initUI();
System.gc();
}
@Override
public void onBackPressed()
{
Log.d(Constants.TAG, "Activity receive back key...");
lockButtons(false);
return;
}
private void lockButtons(boolean b)
{
if(isPageRunning)
{
btnBack.setClickable(!b);
btnShare.setClickable(!b);
}
}
private class DelayReleaseKey implements Runnable
{
public void run()
{
try{Thread.sleep(10000);}
catch(InterruptedException ie){}
handler.sendEmptyMessage(0);
}
}
private class ButtonClickHandler implements OnClickListener
{
public void onClick(View v)
{
if(v==btnBack)
{
if(isFacebookWorking)
{ShowAlertDialog(Constants.MESSAGE_FACEBOOK_WORK);}
else
{
lockButtons(true);
formImage=null;
photo=null;
b=null;
facebook=null;
isPageRunning=false;
Intent intent=new Intent(FacebookShareActivity.this, PracticeListActivity.class);
startActivity(intent);
FacebookShareActivity.this.finish();
overridePendingTransition(android.R.anim.slide_in_left,android.R.anim.slide_out_right);
}
}
if(v==btnShare)
{
lockButtons(true);
facebookLogin();
}
}
}
}
Теперь я знаю, что должен переопределить onSaveInstanceState, onRestoreInstanceState.
Они могут помочь мне сохранить переменную вроде String, int, boolean ...
Как насчет битмапа?
А что если моя переменная является статической?