How to destroy an activity in Android?

后端 未结 3 705
半阙折子戏
半阙折子戏 2020-12-13 10:30

While the application is running, I press the HOME button to close the application. When I start the application again, it resumes on the page displayed prior to clicking on

相关标签:
3条回答
  • 2020-12-13 10:51

    Most likely you have several instances of the same activity. To resolve this kind of issues create your own parent Activity class e.g. MyRootActivity which will hold static list of all of available/alive activities:

    public class MyRootActivity extends Activity
    {
        private static final String TAG=MyRootActivity.class.getName();
        private static ArrayList<Activity> activities=new ArrayList<Activity>();
    
    
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            activities.add(this);
        }
    
        @Override
        public void onDestroy()
        {
            super.onDestroy();
            activities.remove(this);
        }
    
        public static void finishAll()
        {
            for(Activity activity:activities)
               activity.finish();
        }
    }
    

    For that all of your activities need to be children of MyRootActivity.

    Then when you are about to sure that you're closing your application - just call MyRootActivity.finishAll();

    0 讨论(0)
  • 2020-12-13 11:13

    Create a static Activity object which activity finish on other activity and assign activity in this i.e you can can add more activities

    public class demoActivity extends AppCompatActivity {
        public static Activity self_intent;
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.demo_activity);
                selfintent=this;
        } 
    
       //Other functions--------------
    } 
    

    do same for other activities

    on other

    public class finishingActivity extends AppCompatActivity {
            public Button activityCloseBtn;
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.finishing_activity);
    
                activityCloseBtn= (Button) view.findViewById(R.id.activity_close_btn);
                activityCloseBtn.setOnClickListener(new View.OnClickListener() {      
                @Override
                public void onClick(View v) {
                   demoActivity.selfintent.finish(); //for finish demoActivityactivity
    
                  //for other activities Activity.selfintent.finish();
                   finish();  //for finish current activity
              }
        });
    
    0 讨论(0)
  • 2020-12-13 11:14

    try calling super.onPause() first and later call finish() inside your onPause() stub

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