2014-02-10 61 views
1

我想弄清楚如何與我的應用程序有多個活動。我已經將它分解到最低的元素,以便輕鬆查看我在做什麼並理解我的問題。在活動之間切換時是否需要添加某些內容以避免內存泄漏?

程序運行時會顯示一個屏幕(活動),其中顯示「多個活動示例(screen1)」。它有一個「按鈕1」來點擊查看下一個活動。

單擊按鈕1將帶您進入不同的活動屏幕,其中顯示「多個活動示例(屏幕2)」。它有一個按鈕2,按下後會返回到screen1。

我想弄清楚返回到前一個屏幕的某種類型的返回方法,但找不出任何。

所以,我的關心/問題是,是否存在某種類型的內存泄漏,使用此方法時會深入到需要某種返回類型的圖層中?

代碼已附上。

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的完整性。如果程序保持運行並且被大量使用,我是否因內存泄漏而崩潰。

謝謝!

回答

1

我試圖找出某種類型的返回方法返回到前一個屏幕,但無法找出任何。

選項#1:調用finish()代替startActivity()SecondActivity。這將破壞當前的活動並將控制返回到前面的活動,在這種情況下爲MainActivity

選項#2:您使用從SecondActivity開始MainActivity添加FLAG_ACTIVITY_REORDER_TO_FRONT on the Intent帶來的MainActivity現有實例到後面堆棧的頂部。從那裏按BACK將返回到SecondActivity,這可能不是你想到的。

+0

謝謝!選項#1正是我正在尋找的。它完美的作品。 –