我已经使用闹钟管理器在特定时间启动stage2,每当应用程序从警报管理器接收广播时,它将启动适当的活动。 当app在stage1中运行并且收到广播时,我使用了以下的coed来启动适当的活动
Intent i = new Intent(context, StageTwo.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
此代码启动活动正常但按下后退键时,前一阶段1活动恢复 我想在按下后退按钮退出应用程序,因为在启动活动时不允许用户返回
请求帮助,因为我陷入困境,无法找到解决方案答案 0 :(得分:0)
只是您可以在开始第二项活动时完成当前活动:
看看这段代码
Intent i = new Intent(context, StageTwo.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
finish();
context.startActivity(i);
祝你好运..
答案 1 :(得分:0)
给定here
Android的设计不赞成选择退出应用程序,而是通过操作系统管理它。您可以通过相应的Intent:
调出Home应用程序
试着消除onBack,即使这样按下并启动主屏幕
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
就像标题所暗示的那样 如果您要退出所有活动尝试此方法
1.创建一个名为 ActivityListHolder
的类2.创建一个活动的数组列表,如
List<Activity> activities=new ArrayList<Activity>(); (make it static)
3.on创建的每个活动都会按ActivityListHolder.activities.Add(this)
4.无论何时你想完成活动,你都可以在列表中循环并检查它不是当前活动,并尝试在该对象上调用finish()
。
答案 2 :(得分:0)
public abstract class AppBaseActivity extends Activity {
public static final String FINISH_ALL_ACTIVITIES_ACTIVITY_ACTION = "com.myActivity.FINISH_ALL_ACTIVITIES";
private BaseActivityReceiver baseActivityReceiver = new BaseActivityReceiver();
public static final IntentFilter INTENT_FILTER = createIntentFilter();
private static IntentFilter createIntentFilter() {
IntentFilter filter = new IntentFilter();
filter.addAction(FINISH_ALL_ACTIVITIES);
return filter;
}
protected void registerBaseActivityReceiver() {
registerReceiver(baseActivityReceiver, INTENT_FILTER);
}
protected void unRegisterBaseActivityReceiver() {
unregisterReceiver(baseActivityReceiver);
}
public class BaseActivityReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(FINISH_ALL_ACTIVITIES_ACTIVITY_ACTION)) {
finish();
}
}
}
protected void closeAllActivities() {
sendBroadcast(new Intent(FINISH_ALL_ACTIVITIES_ACTIVITY_ACTION));
}
}
答案 3 :(得分:0)
在Api等级16及以上,您可以使用
finishAffinity();
方法及其下方,您必须手动保存所有创建的活动列表并逐个完成。 API 16下面没有第二个选项:(。然后开始你的启动活动。 多数民众赞成......
答案 4 :(得分:0)
我解决了这个问题,我认为这是我的愚蠢错误,因为我忘记了活动生命周期
当广播接收器发起stage2活动时,我只是在stage1活动的onPause()方法中调用finish()方法,现在问题解决了。