我正在运行一项特定时启动新活动的服务 应用程序已启动。
例如,当我启动短信应用程序时,我的服务会检测到它 检查热门活动包名称并开始新活动。
但问题是,在开始新活动之后,当我完成时 该活动并从短信应用程序按BACK按钮返回 主屏幕,它没有完成我的短信应用程序。
即使屏幕在家(发射器),当我检查顶级活动时 名称,短信应用程序作为顶级活动运行,这意味着短信应用程序是 按BACK按钮后没完成。
我使用Intent.FLAG_ACTIVITY_NEW_TASK意图标志来启动新标志 活动和完成()完成它。有谁知道为什么我的 在这种情况下,BACK按钮无法完成短信应用程序?
感谢,
777
答案 0 :(得分:1)
从我所看到的情况来看,后退按钮将暂停当前的活动,无论它在做什么。如果您绝对需要完成它,请查看lifecycle of an activity,并将一些代码放入onPause()和onStop()函数中。
答案 1 :(得分:1)
好吧,如果它没有锻炼..尝试重写OnBackPressed方法 并把finish()放在那里..希望这有帮助
答案 2 :(得分:0)
如果您想在用户导航回设备时完成活动,那么您可以使用此代码更有帮助。
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
this.finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
答案 3 :(得分:0)
我在我的活动中做了类似的事情:
@Override
public void onBackPressed(){
AlertDialog.Builder alert = new AlertDialog.Builder(ctx);
alert.setTitle("Wylogowanie i wylaczenie.");
alert
.setMessage("Exit?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//DO SOMETHING YOU NEED eg. destroy/close DB, stop services, and move the task to back
db.getWritableDatabase(); //getDB
db.destroyDB(context); //Destroy it
db.close(); //and close
stopService(new Intent(getBaseContext(), SVCKeepLogged.class)); //stop some service
moveTaskToBack(true); //hide activity (this do not kill it - you can use finish() here)
//finish();
}
})
.setNegativeButton("NOOO!", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
//Keep app alive.
dialog.cancel();
}
});
AlertDialog alertDialog = alert.create();
alertDialog.show();
}
答案 4 :(得分:0)
尝试
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
// TODO
}
@Override
public boolean onOptionItemSelected(MenuItem item){
if(item.getItemId() == android.R.id.home){
finish();
}
}