如何破坏Android中的活动?

时间:2010-11-09 08:12:07

标签: android

在应用程序运行时,我按HOME按钮关闭应用程序。当我再次启动应用程序时,它会在单击HOME之前显示的页面上恢复。我希望应用程序从初始显示开始。我已经使用finish()来完成活动,但它无法正常工作。有什么建议吗?

3 个答案:

答案 0 :(得分:20)

您很可能有多个相同活动的实例。要解决此类问题,请创建您自己的父级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();
    }
}

因为你所有的活动都需要成为MyRootActivity的孩子。

然后当您确定要关闭应用程序时 - 只需调用MyRootActivity.finishAll();

答案 1 :(得分:0)

创建一个静态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--------------
} 

为其他活动做同样的事情

在其他

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

答案 2 :(得分:-2)

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