问题标签 [launchmode]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 当子活动从android中的最近列表开始时如何重新启动应用程序
我的应用程序有两个活动。
- 主要活动:单任务
- 子活动:singleInstance
使用触摸应用程序图标启动应用程序时,主要活动开始。并转到子活动,然后按主页按钮。然后使用任务杀手杀死应用程序。当用户从最近的列表中选择应用程序时,我想重新启动应用程序,但应用程序从子活动开始。我试图在主要活动上设置 clearTaskOnLaunch 但它不起作用。
有谁知道如何解决这个问题?
android - 如果按下后退按钮,android singleinstance 活动不是单一的
我遇到了一个有趣的问题,一个 Activity 被创建了多次,即使它在 manifest 中定义为一个 singleTask 或一个 singleInstance Activity。这是如何复制的。说,在主要活动中:
在我的 SingleActivity 中,我有:
在清单中,我有:
现在,如果我启动应用程序,一切似乎都还好,在一种情况下可以预期:如果我SingleActivity
在前面按下“后退”按钮,它会导航回MainActivity
,MainActivity.onResume()
将在其中创建另一个SingleActivity
实例,而不是把已经存在的那个. 这是我知道的,因为在日志上显示了不同的身份哈希码。
如果启动模式是 singleTask,似乎也是如此。
唯一的解决方法似乎是 override onBackPressed()
,但这似乎是一个丑陋的解决方案。
我想知道我做错了什么
android - 无法重新启动由 PendingIntent 启动的活动
我无法重新启动由PendingIntent
.
“无法重新启动”意味着什么,例如,当关于活动已经运行时,永远不会调用onCreate或onNewIntent 。startActivity()
名为 MainActivity 我无法重新启动的 Activity 是 singleTop并覆盖onNewIntent。
以下是关于MainActivity
:
首先,它MainActivity
是由具有未决意图的通知启动的。
我的 PendingIntent 是:
并MainActivity
执行startService()
,服务执行sendBroadcast()
,广播类执行startActivity(Intent(this,MainActivity.class))
Jere 是 BroadcastClass:
然后onNewIntent()
是......永远不会被调用onCreate()
。
但是,当通过在 homeScreen 上按下图标启动程序时,onNewIntent
inMainActivity
被同一流程调用。
编辑: onNewIntent 在这里。
“onNewIntent”没有出现在 LogCat 上。
android - android:launchMode singleInstance 问题
Android 的 singleInstance launchMode 似乎为我的应用程序的主要任务做了我想要的,即每当我从左侧菜单栏导航回它时保持该 Activity 的状态。
问题是,使用此启动模式设置,我看到大多数设备上的活动之间出现可怕的黑色闪烁。谷歌搜索没有发现任何关于这是否正常或如何解决的问题。
我尝试了 singleTask,但这并没有完全符合我的要求,因为如果我从任务 A - B - C 回到 A,任务 B 将从堆栈中删除,并且在我开始时必须再次重新加载它的状态那个活动。
此外,这可能是缺乏对 singleInstance 的完全理解,但后退按钮不再适用于这些活动。我想要发生的是,当按下后退按钮时,任何 singleInstance 活动都会返回到主屏幕。
对此的任何帮助将不胜感激。
谢谢!
android - Android:在 singleTop/singleTask 模式下绑定应用程序 (AIDL)
我用 AIDL 文件绑定了 2 个 android 应用程序。A和B应用程序之间的交换如下:
- A应用通过AIDL接口连接到B应用
- A应用调用B服务的方法
- B 服务返回一个 PendingIntent
- 应用程序启动 PendingIntent
- 当 B 应用程序中的操作完成时:返回 A 应用程序
但是,如果 B 应用程序在交换之前启动,则在调用“finish()”方法后,用户将被重定向到 B 应用程序的最后一个活动,而不是在 A 应用程序中。
在我的 A 应用程序中:
我尝试在 A 应用程序清单文件中将 android:launchMode 设置为 singleTask 或 singleTop 但问题仍然存在。如您所见,我在发送活动时还放置了一个“FLAG_ACTIVITY_MULTIPLE_TASK”标志。
我的 B 应用程序中的代码:
创建 PendingActivity
在计费活动中
感谢您的阅读!
- -更新
我的 B 活动清单文件:
android - Android 从服务启动 Activity 而不启动应用程序的其他 Activity
我在检测到 IncomingCall 时开始使用 Theme.Dialog 的活动;但是,当我开始我的对话活动时,它会隐藏来电屏幕,这不是我想要的行为。我想单独启动该对话活动,以便它出现在来电屏幕的顶部,而不是整个应用程序出现在来电屏幕的顶部。我在 Manifest 和 NEW_TASK 标志中使用了 SingleTask,并使用了各种上下文。作为提示,我想做类似 TrueCaller Android App 的事情。
android - 为什么 Android 应用程序中的 Account Picker 会被取消?
按照将文件从 Android 设备上传到 Google Drive 的“五分钟快速入门”文档,我编写了一个成功上传文件的测试应用程序,但我尝试将相关代码复制到更大的应用程序并没有上传文件,因为它的 Google Account Picker 总是被取消:
- onActivityResult() 结果代码为 0(即 RESULT_CANCELED),
- onActivityResult() 意图参数为空,并且
- logcat(如下所示)显示“活动正在作为新任务启动,因此取消活动结果。”
04-22 02:04:25.098: D/alsa_ucm(162): snd_use_case_set(): uc_mgr 0x40e59388 identifier _verb value HiFi Lowlatency 04-22
02:04:25.098: D/alsa_ucm(162): 设置扬声器启用 1 的混音器控制
04-22 02:04:25.098: D/ACDB-LOADER(162): ACDB -> send_afe_cal 04-22
02:04:25.098: I/ActivityManager(526): START u0 {act=com.google.android.gms .common.account.CHOOSE_ACCOUNT cmp=com.google.android.gms/.common.account.AccountPickerActivity (has extras)} from pid 3484
04-22 02:04:25.098: W/ActivityManager(526): Activity 启动为一个新任务,因此取消活动结果。
04-22 02:04:25.108: D/alsa_ucm(162): 设置 HiFi Lowlatency enable 1 的混音器控制 04-22
02:04:25.108: D/ALSAModule(162): 返回的设备值为 hw:0,14
04-22 02:04:25.118: D/ALSAModule(162): setHardwareParams: reqBuffSize 1024 通道 2 sampleRate 48000
04-22 02:04:25.118: D/ALSAModule(162): setHardwareParams: buffer_size 2048, period_size 1024, period_cnt 2
04-22 02:04:25.188: D/dalvikvm(526): GC_FOR_ALLOC 释放 565K, 15% 释放 18562K/21684K, 暂停 71ms, 总共 71ms 04-22
02:04:25.248: D/overlay(159): 未设置管道=VG0 dpy=0;未设置管道=VG1 dpy=0;取消设置 pipe=RGB1 dpy=0
04-22 02:04:25.248: W/InputMethodManagerService(526): 窗口已经聚焦,忽略焦点增益:com.android.internal.view.IInputMethodClient$Stub$Proxy@41ebd7e0 属性=null , token = android.os.BinderProxy@42018140
04-22 02:04:27.991: D/dalvikvm(526): GC_FOR_ALLOC 释放 422K, 15% 释放 18564K/21684K, 暂停 65ms, 共 66ms
04-22 02:04:28.011: I/ActivityManager(526): 不再需要 com.google.android.marvin.talkback (pid 5301): empty #17
04-22 02:04:28.241: D/overlay(159 ): 设置管道=RGB1 dpy=0; 设置管道=VG0 dpy=0;设置管道=VG1 dpy=0;
04-22 02:04:28.672: D/overlay(159): Unset pipe=VG0 dpy=0; 未设置管道=VG1 dpy=0;未设置管道=RGB1 dpy=0;
启动 Google 帐户选择器的代码在两个应用程序中完全相同,但选择器仅在较大的应用程序中被取消。
测试应用程序和更大的应用程序都是调试版本,包括相同的 jars(如下所示),并且在相同的设备(Nexus 4,OS 4.2.2)上运行,但是,正如五分钟快速入门中所建议的,每个应用程序都有自己的由Google API 控制台生成的自己的客户端 ID 。
取消的结果是 onActivityResult() 在 Google Account Picker 被绘制后立即运行,远在选择帐户之前。
更新:
经过大致等量的试验和错误后,事实证明,从 AndroidManifest.xml 中删除以下内容可以解决问题。
我最初的问题是为什么现在转向为什么 Android 中的 Google Account Picker 需要创建多个实例?
谢谢,
格雷格
android - Mosync 应用程序在通过通知启动时崩溃。LaunchMode 单任务
我正在使用 Mosync SDK 3.2.1 为 Android 2.2、2.3 和 4.03 开发 HTML 5 应用程序。我遇到了这篇文章http://jira.mosync.com/browse/MOSYNC-2367中描述的问题。建议的修复
android:launchMode="singleTask"
解决了从菜单启动应用程序时的“重新启动应用程序”问题,但在应用程序在后台运行时通过通知破坏了应用程序的启动行为。(在launchMode =“标准”,工作正常,应用程序恢复)。使用此修复程序,它会崩溃并显示消息“不幸的是,Zymbo 已停止”(4.0.3)和“应用程序 Zybmbo 已意外停止”。
如果应用程序不在后台运行,则通过通知启动可以正常工作,应用程序将启动。
这就是在清单文件中声明 MAIN 活动的方式。
这是应用程序现在的行为方式:
1. 通过菜单快捷方式启动应用程序
2. 按“主页”
3. 通过菜单快捷方式启动应用程序 (launchMode="standard" => 重新启动应用程序 BAD / launchMode="singleTask" resumes后台应用程序 OK)
4. 按“Home”
5. 通过通知项启动应用程序(launchMode="standard" - 打开在后台运行的应用程序 OK /launchMode="singleTask" 应用程序崩溃 BAD)
我想要实现的是,如果应用程序在后台运行并且我从菜单中单击通知或应用程序图标,我希望应用程序恢复而不是重新启动。
任何提示表示赞赏,谢谢你,迈克
android-widget - 小部件配置活动不创建小部件
我正在使用 aSherlockFragmentActivity
作为小部件配置活动:
为什么我创建一个新的小部件,活动打开,但是当它结束时,虽然我让它返回一个 OK 结果,但没有创建任何小部件:
当我有一个不同的(非Sherlock)配置活动时,它曾经工作过,我不知道为什么它不能与这个活动一起工作。也许 aSherlockFragmentActivity
不能充当配置活动?还是我错过了其他东西?
android - 如何避免点击android快捷方式创建新的应用程序实例并杀死旧的
我通过以下代码创建了一个 android 快捷方式
当我打开我的应用程序,最后在一些像 BActivity 这样的活动中,然后我切换到主屏幕并单击快捷方式,应用程序像上面的代码一样来到 MainActivity,我有机会避免这种情况,只是让应用程序进入前台如果它已经创建?