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