我正在试图弄清楚如何在我的应用程序中进行多项活动。我把它条纹化到最低的元素,以便很容易看到我在做什么并理解我的问题。
当程序运行时,它会显示一个显示“多个活动示例(屏幕1)”的屏幕(活动)。它有一个“按钮1”点击查看下一个活动。
单击按钮1将转到另一个活动屏幕,其中显示“多个活动示例(屏幕2)”。它有一个按钮2,按下后将返回到屏幕1。
我试图弄清楚某种类型的返回方法回到上一个屏幕,但无法弄明白。
所以,我的担忧/问题是,是否存在某种类型的内存泄漏,使用此方法会更深入到需要某种类型返回的层中?
附上了代码。
MainActivity:
package apollo.MultipleActivities;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void button1_click(View v) {
Intent myIntent = new Intent(this, SecondActivity.class);
startActivity(myIntent);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
第二项活动:
package apollo.MultipleActivities;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.secondactivity);
}
public void button2_click(View v) {
Intent myIntent = new Intent(this, MainActivity.class);
startActivity(myIntent);
}
}
主要活动XML布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/screen1" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button1" android:onClick="button1_click"/>
</LinearLayout>
第二个活动XML布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/screen2" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="button2_click"
android:text="@string/button2" />
</LinearLayout>
清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="apollo.MultipleActivities"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="apollo.MultipleActivities.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SecondActivity"></activity>
</application>
</manifest>
该应用程序运行完美,正是我正在努力做到的。我关注的是Android整体的完整性。如果程序继续运行并且被大量使用,那么我在内存泄漏方面会崩溃。
谢谢!
答案 0 :(得分:1)
我试图弄清楚某种类型的返回方法回到上一个屏幕,但无法弄明白。
选项#1:在finish()
中呼叫startActivity()
而不是SecondActivity
。这将破坏当前活动并将控制权返回到前一个活动,在本例中为MainActivity
。
选项#2:添加FLAG_ACTIVITY_REORDER_TO_FRONT
on the Intent
,用于从MainActivity
启动SecondActivity
,将现有的MainActivity
实例置于后端堆栈的顶部。从那里按BACK将返回SecondActivity
,这可能不是你的想法。