通过单击应用程序图标打开Android应用程序重新启动

时间:2013-07-09 10:30:03

标签: android android-activity icons

场景:

我通过点击图标打开我的应用程序,执行操作,浏览活动,通过单击主页按钮暂停应用程序。

案例1:

如果我再次点击图标打开我的应用,应用会从第一个活动重新开始。

案例2:

如果我从最近打开的应用程序打开我的应用程序(在4.0中通过按菜单按钮并选择我的应用程序),它将从暂停状态开始。

我希望行为2始终发生,不希望我的应用每次打开时都会通过点击图标重新启动。

我将我的清单文件与其他应用程序进行了比较,它们与我的相似,但表现不同(即我想要的第二种情况)。

修改

这里有人问过:App completely restarting when launched by icon press in launcher

但没有答案:(

5 个答案:

答案 0 :(得分:6)

我找到了。我在活动标记中设置了一个标记android:launchMode="singleTask"。我删除了那段代码。

我还为我的代码中的所有活动添加了onsaveInstance方法,现在它正在运行!

谢谢:)

答案 1 :(得分:4)

将此添加到您的启动器活动:

if (!isTaskRoot()) {
    finish();
    return; 
}
super.onCreate(savedInstanceState);

答案 2 :(得分:0)

尝试使用此代码替换您的泼水活动代码..

public class Splash extends Activity {

protected boolean _active = true;
protected int _splashTime = 2000;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.splash);

    Thread splashTread = new Thread() {
        @Override
        public void run() {
            try {
                int waited = 0;
                while (_active && (waited < _splashTime)) {
                    sleep(100);
                    if (_active) {
                        waited += 100;
                    }
                }
            } catch (InterruptedException e) {
                e.toString();
            } finally {
                Intent intent = new Intent(getApplicationContext(),
                        MainActivity.class);
                startActivity(intent);
                finish();
            }
        }
    };

    splashTread.start();
}

@Override
protected void onPause() {
    super.onPause();
}

@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
//      super.onBackPressed();
}
}

答案 3 :(得分:0)

在当前活动中设置一些需要显示2秒的图像,如下所示。

ImageView im = new ImageView(this);
im.setImageResource(set your image);
setContentView(im);
intentMainScreen = new Intent(getApplicationContext(), MainScreen.class);
Handler x = new Handler();
x.postDelayed(new splashhandler(), 2000);

然后在SplashHandler类中启动您的活动(在run方法中实现runnable和call start活动)。

它将显示你的启动画面2秒并开始另一个活动。

答案 4 :(得分:0)

在AndroidManifest中似乎您保留了启动活动android:launchMode="singleTask"。从您的启动活动中删除这一行即可解决问题