Активность не работает в фоновом режиме в Android

При нажатии на кнопку «Домой» и повторном перезапуске приложения оно запускается с первого экрана, а не остается на том экране, который я оставил.

Спасибо за помощь.

public class WelcomeScreen extends Activity implements OnClickListener {
    /** Called when the activity is first created. */
    private Button signUp,login;
    private RelativeLayout relative;
    GlobalVariable global;

    @Override
    public void onCreate(Bundle savedInstanceState)
        {
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            requestWindowFeature(Window.FEATURE_PROGRESS);
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            global=(GlobalVariable)getApplicationContext();
            signUp=(Button)findViewById(R.id.signUp);
            login=(Button)findViewById(R.id.login);
            relative=(RelativeLayout)findViewById(R.id.welcome_panel);
            signUp.setOnClickListener(WelcomeScreen.this);
            login.setOnClickListener(WelcomeScreen.this);   
        }
    @Override
    public void onResume()
    {
        super.onResume();
        Toast.makeText(WelcomeScreen.this, "  onResume called", Toast.LENGTH_SHORT).show();
    }
    @Override
    public void onPause()
    {
        super.onPause();
        Toast.makeText(WelcomeScreen.this, "  onPause called", Toast.LENGTH_SHORT).show();
    }
    /*
     * Button Onclick event for signup and login button
     * 
     */
    public void onClick(View v) 
    {

            if(v==signUp)
            {
                Intent signupPanel=new Intent(WelcomeScreen.this,SignupPanel.class);
                startActivity(signupPanel);
                callNull();
            }
            else if(v==login)
            {
                //start a login screen              
                Intent loginPanel=new Intent(WelcomeScreen.this,LoginPanel.class);
                startActivity(loginPanel);
                callNull();
            }

    }

    public void callNull()
    {   
        this.finish();  
    }
    @Override
    public void onDestroy()
    {
        super.onDestroy();
        Toast.makeText(WelcomeScreen.this, " on destroy called", Toast.LENGTH_SHORT).show();
        System.gc();
        relative.setBackgroundDrawable(null);
        login.setBackgroundDrawable(null);
        signUp.setBackgroundDrawable(null);

    }
     public boolean onKeyDown(int keyCode, KeyEvent event) 
        {
              if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) 
              {
                  //  android.os.Process.killProcess(android.os.Process.myPid());


                    return true;
              }

              return super.onKeyDown(keyCode,event);
        }

}

person Kakey    schedule 27.05.2011    source источник
comment
Можете ли вы показать нам код, который вы используете в своих методах onStop / onDestroy / onPause и / или в onKeyDown?   -  person WarrenFaith    schedule 27.05.2011
comment
просто чтобы быть уверенным, что я правильно понял: если вы нажмете клавишу «Домой», начальный экран не появится, но появится первый экран вашего приложения?   -  person WarrenFaith    schedule 27.05.2011
comment
Нет ... всегда главный экран появляется, когда я нажимаю кнопку "Домой" в любом действии.   -  person Kakey    schedule 27.05.2011
comment
Хорошо, а что именно происходит? Не могли бы вы быть очень конкретными в том, что вы делаете, что происходит и чего вы ожидаете / хотите, чтобы это произошло. Я здесь очень запутался ...   -  person WarrenFaith    schedule 27.05.2011
comment
Я отредактировал ваш вопрос, чтобы было понятнее ... Пожалуйста, сделайте это в следующий раз сами ...   -  person WarrenFaith    schedule 27.05.2011
comment
@WarrenFaith Спасибо за вашу помощь.   -  person Kakey    schedule 27.05.2011


Ответы (3)


Пожалуйста, проверьте, есть ли у вас событие нажатия клавиши «Домой». Если вы написали свою домашнюю клавишу, нажмите wvent, тогда я думаю, что эта проблема может возникнуть.

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub

        if (keyCode == KeyEvent.KEYCODE_HOME){
            // did you write your code to launc your application here
        }
        return super.onKeyDown(keyCode, event);
    }

Спасибо Дипак

person Sunil Kumar Sahoo    schedule 27.05.2011
comment
Я использовал действие только для спины. не для клавиши дома. - person Kakey; 27.05.2011

Проверьте свой файл манифеста. Вероятно, у вашей активности есть noHistory=true атрибут. Если нет, то проверьте флажки, где начинается активность.

person pawelzieba    schedule 27.05.2011
comment
что не объясняет, почему приложение не переходит в фоновый режим. - person WarrenFaith; 27.05.2011
comment
Я думал, что неправильно понял вопрос, но после комментария Джинды я не уверен. - person pawelzieba; 27.05.2011
comment
@WARREN просто, когда вы нажимаете кнопку «Домой», действие теряет свое состояние в моем приложении. Почему? - person Kakey; 27.05.2011
comment
@Jinda Вы имеете в виду стек активности? - person pawelzieba; 27.05.2011
comment
да. именно эта ветка объясняется я спросил. stackoverflow.com/questions/2061143/ - person Kakey; 27.05.2011
comment
@Jinda: было ли так сложно сказать, что вы действительно снова запускаете свое приложение? Ваш вопрос выглядит так, как будто вы нажали кнопку «Домой», но вместо того, чтобы вернуться домой, приложение возвращается к вашему первому действию. В следующий раз будьте более информативными в своих объяснениях ... иначе вы просто зря потратите наше время! - person WarrenFaith; 27.05.2011

Я чувствую, что это вопрос государственного управления. Просто создайте хэш-карту и сохраните последний просмотр их. и напишите условие, которое установит представление. если в хэш-карте нет записи, покажите первый экран так же, как и нужный экран.

Если вы можете получить лучшее представление о государственном обслуживании, тогда это будет лучше. Спасибо, Дипак.

person Sunil Kumar Sahoo    schedule 27.05.2011