【问题标题】:Activity launched from widget activity unresponsive in Nougat从牛轧糖中无响应的小部件活动启动的活动
【发布时间】:2016-12-01 00:07:38
【问题描述】:

当我的小部件(或相关通知)被点击时,PendingIntent 会启动一个活动,该活动会显示与小部件相关的项目列表。如果点击列表项之一,小部件活动将使用标准操作意图启动我的主要活动。然后主活动显示有关所选项目的详细信息。

这一切都通过 Android 6.x Marshmallow 完美运行,但在 Android 7 (Nougat) 上,启动的主 Activity 在视图中显示正确的数据,但整个 UI 完全没有响应。按钮、滚动、视图滑动:没有任何作用!唯一会做出响应的是系统后退按钮,它可以按预期将您带回到小部件活动的列表。

Nougat 的哪些变化会导致这种情况?我的构建目标是 23。启动主要活动的所有其他方式都可以正常工作,并且在早期的 Android 版本上一切仍然有效。这是启动主要活动的代码:

        String uri = "file://" + mPrefs.getDbPath();
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(Uri.parse(uri), "application/octet-stream");
        int indId = otdEvt.mId[0] > 0 ? otdEvt.mId[0] : otdEvt.mId[1];
        intent.putExtra(EXTRA_LAUNCH_ID, indId);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        try {
            startActivity(intent);
        }
        catch (ActivityNotFoundException e) {
            Toast.makeText(mCtx, getString(R.string.launch_err), Toast.LENGTH_SHORT).show();
        }

有或没有 FLAG_ACTIVITY_NEW_TASK 没有区别。

新信息:如果我还包括 FLAG_ACTIVITY_CLEAR_TASK,则启动的主要活动按预期工作。但是,这不是一个可接受的解决方案,因为按下后退按钮会返回主屏幕,而不是显示项目列表的小部件活动。我还将我的构建目标和库更新到了 24 级,这是我的设备正在运行的。

【问题讨论】:

  • 我有一个 Android 7.0 驱动的 Nexus 5X 作为我的“日常驱动程序”。应用程序小部件可以毫无问题地在其上启动活动。您的测试环境是什么(即您使用的是什么硬件或模拟器)?
  • 使用我的 5x。小部件本身正确启动列表显示活动。当该活动启动另一个活动时,它会中断。

标签: android android-intent android-activity


【解决方案1】:

过失。经过详尽(耗尽)调试后,我找到了我的错误。在这里很难解释,但这是我在 Android 2.3 天时尝试“优化”执行时间等时所做的事情。无论如何,我打破了一些常识规则,走了一些捷径,并且只是逃脱了用了几年。它很容易修复,现在在我的设备和报告相同问题的客户的设备上都可以正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 2017-01-04
    • 1970-01-01
    相关资源
    最近更新 更多