Android activity recreate itself

后端 未结 13 1515
攒了一身酷
攒了一身酷 2021-02-05 07:06

My app normally works just fine, until I face a strange problem on specific device. There are 2 activities in App. After I start ActivityB inside of ActivityA, ActivityA starts

相关标签:
13条回答
  • 2021-02-05 07:35

    Activity A uses layout R.layout.mesajlar_list

    Activity B uses layout R.layout.mesajdetaylari

    But both have the following line of code:

    kapatButton = (ImageView) findViewById(R.id.kapat_button);
    

    Which layout is R.id.kapat_button in? Using the same id in different layouts is a very risky thing to do. I can't guarantee it's causing what you're seeing, but it is the sort of thing that may cause weird behaviour.

    0 讨论(0)
  • 2021-02-05 07:39

    I got this issue recently, and this make me annoyed. I think that issue around 2 options solution to check but useless.

    About the setting "Don't keep activities" corrected here, I used this code to check that it optional checked or not (my test device customize base on version 2.3.5 and not show this option):

    private boolean isAlwaysFinishActivitiesOptionEnabled() {
        int alwaysFinishActivitiesInt = 0;
        if (Build.VERSION.SDK_INT >= 17) {
            alwaysFinishActivitiesInt = Settings.System.getInt(getApplicationContext().getContentResolver(), Settings.Global.ALWAYS_FINISH_ACTIVITIES, 0);
        } else {
            alwaysFinishActivitiesInt = Settings.System.getInt(getApplicationContext().getContentResolver(), Settings.System.ALWAYS_FINISH_ACTIVITIES, 0);
        }
    
        if (alwaysFinishActivitiesInt == 1) {
            return true;
        } else {
            return false;
        }
    }
    

    Result check is false in my case. I also check the memory when running application and it nothing occur.

    0 讨论(0)
  • 2021-02-05 07:43

    I do not see any problem in this behaviour.

    In case you wish to preserve the state of ActivityA, make use of the methods onSaveInstanceState and onRestoreInstanceState. See Activity Lifecycle at http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle for more details.

    See also https://stackoverflow.com/a/10492967/332210 for a deeper understanding.

    0 讨论(0)
  • 2021-02-05 07:48

    Have you tried changing the launchmode in the Android Manifest? Try adding this to your Activity declaration:

    android:launchMode="singleTask"
    

    Next, try using startActivityForResult, instead of startActivity. This will force Activity A to call its onActivityResult(int, int, Intent) method when Activity B finishes - which may skip this (buggy) call to onCreate. Then, in Activity A, implement the method to do something (such as printing a debug statement):

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        Log.i("Test", "Did this work???");
        //TODO send notification to your server to verify this works?
    }
    
    0 讨论(0)
  • 2021-02-05 07:49

    I think it is not because of memory the limit.

    https://www.box.com/s/7pd0as03bb8wwumuc9l9

    You should test these two activities and check whether it is happening in this example too or not. Please share your AndroidManifest.xml file content too, it will help with debugging.

    0 讨论(0)
  • 2021-02-05 07:52

    Check to see whether Don't keep activities under Settings > System > Developer options > Apps is enabled or not.

    0 讨论(0)
提交回复
热议问题