在我的Android应用程序中,流程如下:主页->第1页->第2页->第3页。在Page1、Page2&Page3有主页按钮,当点击主页按钮时,它应该会启动主页(MainActivity)。这里MainActivity类从服务器获取JSON数据。
现在我的问题是:当我在第1页、第2页或第3页时,如果我点击主页按钮,它应该转到MainACctivity。类似地,如果我在第3页,如果我点击设备后退按钮,它应该会转到第2页。
为此,我使用的通常的解决方案,如
//In Page1 Activity, Under Home button OnClickListner:
Intent in = new Intent(Page1.this,MainActivity.Class);
StartActivity(in);
这样,每当MainActivity类得到load&与服务器通信,导致应用程序性能低下。
我尝试的另一种方法,即
//In Page1 Activity, Under Home button OnClickListner
finish();
这适用于第1页。如果我在Page2中使用finish(),它将启动page1活动。或者,我用了一些类似的东西:
//In Page1 Activity:
Intent in = new Intent(Page1.this,Page2.Class);
startActivity(in);
finish();
在第2页中,在主页按钮OnClickListener下,我写了finish()。这样,当我在第二页时,如果我点击主页按钮,它将启动MainActivity。同时,如果我点击设备的后退按钮,它正在启动MainActivity。必须转到第1页。
拜托,有人能告诉我这次自杀需要用什么吗。
谢谢大家。
您应该在子活动的意图中设置一个标志。
Intent i = new Intent(Page3.this, MainActivity.class);
i.setFlags(FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
http://developer.android.com/guide/components/tasks-and-back-stack.html,了解更多信息。
使用此代码:
在所有页面的主页按钮的OnClick
中,写下:
Intent in = new Intent(Page1.this,MainActivity.Class);
startActivity(in);
finish();
在第1页的onBackPressed
中,写入:
Intent in = new Intent(Page1.this,MainActivity.Class);
startActivity(in);
finish();
在第2页的onBackPressed
中,写入:
Intent in = new Intent(Page2.this,Page1.Class);
startActivity(in);
finish();
在第3页的onBackPressed
中,写入:
Intent in = new Intent(Page3.this,Page2.Class);
startActivity(in);
finish();
在开始这样的活动之前,请尝试为您的意图添加一个标志。
Intent mIntent = new Intent(Present_Activity.this, Next_Activity.class)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK);
已编辑
在调用finish之前,在您的主活动中调用方法:
moveTaskToBack(true);
不知怎么的,我找到了自杀的解决方案。。在Page2上,主页按钮SetonClickListener编写了如下代码:
Intent in = new Intent(Page2.this,MainActivity.class);
startActivity(in);
在清单文件下:对于主要活动,已使用类似
android:launchMode="singleTask"
这样,每次单击主页按钮都会启动实例MainActivity,但不会与服务器通信。
看看文档,您可以在声明任何activity
时使用清单文件中的android:parentActivityName
属性。
示例:
<activity
android:name="com.example.Page2"
android:parentActivityName="com.example.MainActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.MainActivity" />
</activity>
您不需要使用Intent
启动MainActivity
。它将处理在执行onBackPressed
时调用ParentActivity。
如果您需要添加SupportLibrary
,可以从这里下载。
编辑:
您应该像这里提到的那样管理Activity Lifecycle
。
在MainActivity
的onCreate
方法中,启动执行AsyncTask
以从服务器加载数据。
当您从Page2
移回时,将调用MainActivity
的onResume
。因此您的数据将不会再次从服务器加载。
我希望它会有所帮助!!