简体   繁体   English

如何破坏Android中的活动?

[英]How to destroy an activity in Android?

While the application is running, I press the HOME button to close the application. 应用程序运行时,我按HOME按钮关闭应用程序。 When I start the application again, it resumes on the page displayed prior to clicking on HOME. 当我再次启动应用程序时,它会在单击HOME之前显示的页面上恢复。 I want the application to start with the initial display instead. 我希望应用程序从初始显示开始。 I have used finish() to finish the activity but it is not working. 我已经使用finish()来完成活动,但它无法正常工作。 Any suggestions? 有什么建议?

Most likely you have several instances of the same activity. 很可能你有几个相同活动的实例。 To resolve this kind of issues create your own parent Activity class eg MyRootActivity which will hold static list of all of available/alive activities: 要解决此类问题,请创建自己的父Activity类,例如MyRootActivity,它将包含所有可用/活动活动的静态列表:

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. 因此,您的所有活动都需要是MyRootActivity的孩子。

Then when you are about to sure that you're closing your application - just call MyRootActivity.finishAll(); 然后当您确定要关闭应用程序时 - 只需调用MyRootActivity.finishAll();

Create a static Activity object which activity finish on other activity and assign activity in this ie you can can add more activities 创建一个静态Activity对象,该活动对其他活动完成并在其中分配活动,即您可以添加更多活动

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
          }
    });

首先尝试调用super.onPause() ,然后在onPause()存根中调用finish()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM