【发布时间】:2012-10-05 12:38:29
【问题描述】:
我是 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();
}
}
【问题讨论】:
-
在 Android 中,后退按钮会终止应用程序(调用 finish();),因此预计应用程序不会恢复,而是创建一个新应用程序。
-
您应该阅读developer.android.com/training/basics/activity-lifecycle/… 以获得更好的理解。
-
我刚刚有一个想法是重写 onBackPressed() 方法,但我不知道当按下返回按钮时如何做出行为,比如按下主页按钮?
标签: android