gpt4 book ai didi

java - 是否需要添加一些东西来避免在 Activity 之间切换时发生内存泄漏?

转载 作者:行者123 更新时间:2023-11-30 03:06:51 25 4
gpt4 key购买 nike

我正在尝试弄清楚如何在我的应用程序中进行多项 Activity 。我已将其分解为最低元素,以便于查看我在做什么并理解我的问题。

当程序运行时,它会显示一个屏幕( Activity ),上面写着“多个 Activity 示例(屏幕 1)。它有一个“按钮 1”,单击以查看下一个 Activity 。

单击按钮 1 将带您进入另一个 Activity 屏幕,上面写着“多个 Activity 示例(屏幕 2)。它有一个按钮 2,按下该按钮将返回到屏幕 1。

我试图找出某种类型的返回方法以返回到上一个屏幕,但找不到任何方法。

因此,我的担忧/问题是,是否存在某种类型的内存泄漏,其中使用此方法会更深入到需要某种类型返回的层中?

附上代码。

主要 Activity :

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

}

第二个 Activity :

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

主要 Activity 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>

第二个 Activity 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>

list 文件:

<?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 的完整性。如果程序保持运行并被大量使用,我是否会因内存泄漏而崩溃。

谢谢!

最佳答案

I was trying to figure out some type of return method to go back to the previous screen, but couldn't figure out any.

选项 #1:在 SecondActivity 中调用 finish() 而不是 startActivity()。这将销毁当前 Activity 并将控制返回到之前的 Activity ,在本例中为 MainActivity

选项 #2:添加 FLAG_ACTIVITY_REORDER_TO_FRONT on the Intent您用于从 SecondActivity 启动 MainActivity 以将 MainActivity 的现有实例带到返回堆栈的顶部。从那里按 BACK 将使您返回到 SecondActivity,这可能不是您想要的。

关于java - 是否需要添加一些东西来避免在 Activity 之间切换时发生内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21667190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com