我想从父活动中关闭子活动.我的流程就像活动A在活动AI打开活动B中打开.但同时我的活动A正在做一些后台任务.当我得到后台任务的结果时,我想关闭活动A中的活动B.
是否可以这样做.需要帮忙.谢谢.
在我的MainActivity电话里
myDialog dialog = new myDialog(MainActivity.this);
dialog.show();
Run Code Online (Sandbox Code Playgroud)
myDialog是我自己的类,我自定义对话框.在对话框中是一个按钮.我希望MainActivity按下按钮时对话框完成/消失,因为我启动了另一个Activity.我怎么能在myDialog课堂上onClickListener说,MainActivity应该finish()呢?
缩短我对话框的代码:
public class myDialog extends Dialog implements OnClickListener {
void onClick() {
Intent menu = new Intent(getContext(), menu.class);
getContext().startActivity(menu);
}
}
Run Code Online (Sandbox Code Playgroud) 由于一个复杂的原因,我需要能够在用户按下HOME按钮时完成()我的活动.
这里的故事是我有一个主屏幕小部件,它启动了我的应用程序的不同部分,它具有完全透明的活动(因此即使我的活动正在运行,主屏幕仍会显示).如果先前的活动通过"主页"按钮终止,则它们将被带到前台并遮盖主屏幕.
或者作为替代方案,我可以以某种方式强制完成()之前的活动吗?
我阅读了有关活动生命周期及其方法的所有内容.
我仍然无法找到答案:当我关闭我的应用程序时,从"打开应用程序"菜单(在galaxy4中长按主页按钮,在nexus5中它是正确的按钮......)正在调用什么方法?如果有的话?
换句话说,我的活动是启动服务.我想在关闭app(活动)时终止服务.(onDestory根本不可靠,如前所述多次)
提前致谢!
我想在特定原因暂停时完成我的活动.直到最近,我的代码工作正常,但最近由于finish()某种原因,该方法停止了它的工作.此外,finish()调用该方法时,我收到以下LogCat消息:
12-31 18:01:23.445: W/ActivityManager(481): Duplicate finish request for ActivityRecord{42465370 u11 "myapplicationpackage"}
Run Code Online (Sandbox Code Playgroud)
有人可以帮我解决这个问题吗?
OnPause() 方法
@Override
protected void onPause() {
super.onPause();
finish();
}
Run Code Online (Sandbox Code Playgroud) 我需要从最近使用的应用列表中删除应用.API级别21及以上版本没有问题.我使用finishAndRemoveTask()方法.但是这个方法不能用于比21更爱的API级别.如何在比21级更爱的API级别上调用该方法?
我尝试了解决方案,但它们不起作用:
finish()在去另一项活动之前,你总是打电话给某些活动吗?
例如,为了防止用户通过移动后退按钮进入上一个活动,有些人建议您应该完成除主要活动之外的所有活动.这样,后退按钮总是返回主活动(或您认为应该导航用户的任何其他活动).这是通过覆盖后退按钮行为来完成的.
不好的事情是当Handler运行一个对话框,试图在活动结束后运行(http://dimitar.me/android-displaying-dialogs-from-background-threads/).
你对这个问题的经验法则是什么?finish()以更智能的方式拨打电话或覆盖后退按钮,将用户引导至您选择的页面?
应用程序中可以有许多活动,最后一次启动的活动保持在堆栈顶部,按下它完成当前活动.我有一系列活动,这里是流程..
如果我们有A,B,C(1),D,C(2) ......活动C(1)和C(2)是在导航应用程序时启动的两个不同的活动实例.那么必要的是清除活动C的所有实例,结果应该是当我完成C(2)时我应该留下这些堆栈A,B,D.我该怎么办 .
IMP -I希望将C(1)保持在堆栈中,直到我完成C(2),因为我可以使用New Task标志启动C而不是创建这些实例,但这些实例具有不同的UI和工作.
以下方法不利.
第一
@Override
public void onBackPressed(){
super.onBackPressed();
Intent intent = new Intent(C(2).this , D.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)
这将清除Stack中的所有活动并重新启动Activity
第二
在单例类中保持Activity的跟踪,然后重新启动所需的流,这将消耗有许多活动要启动的时间.
所以我认为应该有一些解决方案使用包管理器或其他解决问题,解决方案是值得赞赏的
在我的应用程序中,我创建了一个自定义通知,其中包含一个显示最近使用的应用程序的按钮(而不是长按主页按钮)
当用户打开主活动并按主页按钮转到主屏幕时,拖动通知抽屉并单击按钮:
期望的结果是显示最近的应用程序,并且主要活动是最近的应用程序之一。
实际结果是显示最近的应用程序,但主要活动不在其中,并且主要活动恢复。
我的代码启动“RecentApps(是一个显示最近应用程序的虚拟类)”类,具有待定意图
Intent recentAppIntent = new Intent(getBaseContext(), RecentApps.class);
PendingIntent pendingrecentAppIntent = PendingIntent.getActivity(getBaseContext(), 1, recentAppIntent, 0);
notificationView.setOnClickPendingIntent(R.id.recentAppButt, pendingrecentAppIntent);
Run Code Online (Sandbox Code Playgroud)
我认为问题在于 getBaseContext,因此当主要活动处于活动状态且未完成时,会显示最近的应用程序,但上下文是主要活动。
我尝试了 getApplication 和 getApplicationContext 但不起作用。
我还尝试使用“recentAppIntent”标志,但它不起作用,这是使用的一半解决方案
recentAppIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
Run Code Online (Sandbox Code Playgroud)
但这不是我需要的。
所以,我的问题是“如何完成待定意图开始的主要活动”。
提前致谢,穆斯塔法
android android-intent activity-finish android-pendingintent
在我的应用程序中,我有一个导航抽屉,我的应用程序的工作方式是只有一个活动,如果您从导航抽屉中选择一些东西,它会启动/替换当前片段.我怎样才能这样做,以便当从导航抽屉中选择某些内容并且新片段开始时,旧片段结束
我不能
@Override
public void onPause() {
// TODO Auto-generated method stub
super.onPause();
getActivity().finish();
}
Run Code Online (Sandbox Code Playgroud)
因为只有一项活动会杀死应用程序.
我如何杀死片段?
编辑:我的片段交易
Home HomeFragment = new Home();
transaction.replace(R.id.llhome, HomeFragment);
transaction.addToBackStack(null);
transaction.commit();
mDrawerList.setItemChecked(position, true);
mDrawerLayout.closeDrawer(mDrawerList);
Run Code Online (Sandbox Code Playgroud)
谢谢
activity-finish ×10
android ×10
dialog ×2
onpause ×2
instance ×1
java ×1
parent-child ×1
systemexit ×1