BACK键未完成活动

时间:2010-12-24 01:21:32

标签: java android

我正在运行一项特定时启动新活动的服务 应用程序已启动。

例如,当我启动短信应用程序时,我的服务会检测到它 检查热门活动包名称并开始新活动。

但问题是,在开始新活动之后,当我完成时 该活动并从短信应用程序按BACK按钮返回 主屏幕,它没有完成我的短信应用程序。

即使屏幕在家(发射器),当我检查顶级活动时 名称,短信应用程序作为顶级活动运行,这意味着短信应用程序是 按BACK按钮后没完成。

我使用Intent.FLAG_ACTIVITY_NEW_TASK意图标志来启动新标志 活动和完成()完成它。有谁知道为什么我的 在这种情况下,BACK按钮无法完成短信应用程序?

感谢,

777

5 个答案:

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