如何在android中创建单实例应用程序?

时间:2012-10-15 14:03:11

标签: android

我是Android的新手,我对此有疑问。

如何在android中创建单个应用程序?  我用谷歌搜索它,我有一个方法来解决它是将launchMode设置为singleTask或singleInstance,当然我尝试但我没有得到预期的决心。

实际上我有一个MP3播放器应用程序,然后运行它:

按主页按钮 - >按住主页按钮 - >选择我的应用 - >它恢复了。

但是当它推出时:

按返回按钮 - >按住主页按钮 - >选择我的应用 - >它恢复不行。我的意思是android创建了我的应用程序的新实例,你知道,2个应用程序一起运行,但我不希望这样。

我尝试将启动模式设置为singleTask。它在第一个活动(我设置为singleTask)中正常工作,但是当我按下屏幕上的一个按钮来引用新活动(我没有设置为sigleTask)时它没有正常工作。

我的应用程序有很多活动,所以我认为将启动模式设置为singleTask或singleInstane并不是很好。

期待您的回答。

谢谢。 @@:如果有任何英语语法错误(我不擅长英语),我很抱歉。

更新:

我已经解决了这个问题,但现在我怀疑我的模拟器。 如前所述,按后退按钮会破坏应用程序,(调用finish()方法),因此我的应用程序所持有的所有环境都将被释放。但是当我按下后退按钮时,我的应用程序可能仍在运行,因为我仍然听到正在播放的歌曲。?

我的代码:

public class MainActivity extends Activity {

MediaPlayer mp;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mp = new MediaPlayer();
    playSong("sdcard/Music/lung ta lung tung.MP3");
}


public void playSong(String str)
{
    try {
        mp.setDataSource(str);
        mp.prepareAsync();
        mp.setOnPreparedListener(new OnPreparedListener() {

            public void onPrepared(MediaPlayer arg0) {

                mp.start();
            }
        });
    } catch (IllegalArgumentException e) {

        e.printStackTrace();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

2 个答案:

答案 0 :(得分:2)

您可以通过将任务移至背景

将后退按钮设为主页
@Override
public void onBackPressed() {

    moveTaskToBack(true);

}

答案 1 :(得分:0)

通常,android方法是操作系统正在处理应用程序。

当您在Android应用程序中按后退按钮时,代码可能会也可能不会处理该按下。

在您描述的场景中,后退按钮可能是在代码中处理的,当它按下应用程序时调用“finish();”在活动上。 例如:

@Override
 public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
       //this will finish the activity
       finish(); 
       //this will act as the home button (Use only one of them)
       //moveTaskToBack(true); 
       return true;
    }
 }

当您按下主页按钮时,会有一个代码可能处理的事件(onPause)。 在某些情况下,当有人按下主页按钮和您想要执行其他操作的方案时,您希望终止应用程序(例如,只需将活动移至后台)。

正如评论中所提到的,您真的应该阅读应用程序的生命周期 Managing the Activity Lifecycle