1

我是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();
    }
}
4

2 回答 2

2

您可以通过将任务移动到背景来将后退按钮设为主页

@Override
public void onBackPressed() {

    moveTaskToBack(true);

}
于 2012-10-15T14:28:56.803 回答
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)。在某些情况下,您想在有人按下主页按钮时终止应用程序,而在某些情况下您想做其他事情(例如,只需将活动移至后台)。

如评论中所述,您确实应该阅读有关应用程序 生命周期管理活动生命周期的信息

于 2012-10-15T14:25:46.773 回答