如何以编程方式从后台恢复 Android Activity

2024-03-03

情况:

  1. 假设我当前正在启动应用程序 Activity A。
  2. 一段时间后,我按下“主页”按钮。应用程序 A 进入后台。
  3. 此时,我开始使用另一个应用程序 B - 例如 youtube 等。
  4. 当前最小化到后台的应用程序 A 中发生了一些事情(在这种情况下发生什么并不重要,假设计时器完成了时间计算)。
  5. 事件发生时,应用程序 A 活动会自动从后台恢复。

问题:

如何完成第5步?基本上我需要知道如何以编程方式从后台恢复应用程序。

我尝试启动意图“重新启动”我的应用程序活动,但没有成功:

Intent intent = new Intent(context, MainActivity.class);
            intent.setAction(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_LAUNCHER);
            context.startActivity(intent);

我的清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.taxti"
    android:versionCode="43"
    android:versionName="1.5.3" >     

    <uses-sdk
        android:minSdkVersion="13"
        android:targetSdkVersion="21" />

    <permission
        android:name="com.example.taxti.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

    <uses-permission android:name="com.example.taxti.permission.MAPS_RECEIVE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />       
    <permission android:name="com.taxti.permission.C2D_MESSAGE"
                android:protectionLevel="signature" />
    <uses-permission android:name="com.taxti.permission.C2D_MESSAGE" />     
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />   
    <uses-permission android:name="android.permission.CALL_PHONE" />  
    <uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
    <uses-permission android:name="android.permission.CLEAR_APP_CACHE" />

    <application
        android:allowBackup="true"        
        android:icon="@drawable/ic_launcher"
        android:hardwareAccelerated="true"
        android:label="@string/app_name"
        android:name="com.taxti.Globals"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.taxti.InitialActivity"
            android:label="@string/app_name"
            android:windowSoftInputMode="adjustPan"
            android:screenOrientation="sensorLandscape"
            android:theme="@style/MyTheme" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.taxti.MainActivity"
            android:label="@string/app_name"
            android:launchMode="singleTop"
            android:windowSoftInputMode="adjustPan"
            android:screenOrientation="sensorLandscape"
            android:theme="@style/MyTheme">
        </activity>

        <service android:name=".MainActivityForegroundService" />

        <intent-filter>
                <action android:name="android.net`enter code here`.conn.CONNECTIVITY_CHANGE" />                
        </intent-filter>

       <intent-filter>
            <action android:name="android.intent.action.CALL_PRIVILEGED" />
            <category android:name="android.intent.category.DEFAULT" />     
            <action android:name="android.intent.action.DIAL" />
            <action android:name="android.intent.action.CALL_BUTTON" />     
            <category android:name="android.intent.category.BROWSABLE" />           
            <data android:scheme="tel" />
       </intent-filter>

        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="xxxx" />             
        <uses-library android:name="com.google.android.maps" />

        <receiver
            android:name=".GcmBroadcastReceiver"
            android:permission="com.google.android.c2dm.permission.SEND" >   
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />               
                <category android:name="com.taxti" />
            </intent-filter>

        </receiver>

    </application>

</manifest>

为了将您的应用程序带到前台,您必须调用startActivity()从另一个上下文(要么Service or a BroadcastReceiver)。只是打电话startActivity()从内部Activity不会将您的应用程序带到前台。

您不需要 ACTION 和 CATEGORYIntent,但你确实需要设置Intent.FLAG_ACTIVITY_NEW_TASK.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何以编程方式从后台恢复 Android Activity 的相关文章

随机推荐

  • 使用 GWT 时未找到 Firebase Service Worker(404 错误)

    我想在我的 GWT Web 应用程序中使用 firebase 云消息服务 但遇到了一些问题 应用程序应该能够注册 Firebase Service Worker 并使用其特定令牌连接到该服务 该令牌 收到的消息以及令牌更改时的事件应该可以在
  • 为什么这个 HashMap.get 返回 null?

    我正在尝试创建一个Hashmap为我执行查找 但是 当我运行此测试代码时 输 出为空 我认为这与密钥存储方式的性质有关 但我并不肯定 也许这是一个类似的怪癖 就像var1 var2不等于 除非它们指向内存中的同一个对象 而您必须使用var1
  • SVG 1.1:什么是“用户单位”以及如何将用户单位转换为绝对单位(例如:毫米)?

    我正在实现 SVG Tiny 1 1 但我无法理解 用户单元 的概念 SVG 1 1 规范将每个没有指定单位 例如 mm cm pt 等 的 定义为 用户单位 在实现 SVGLength 接口时 我遇到了4个与长度值相关的属性 value
  • 使用 GeoPandas 将点几何图形转换为线串

    我有一个地理数据框gdf看起来像这样 longitude latitude geometry 8628 4 890683 52 372383 POINT 4 89068 52 37238 8629 4 890500 52 371433 PO
  • 包从flutter智能手表接收心率数据

    我正在寻找一款可以让我轻松地在三星手表或苹果手表等智能手表之间同步的包 我想从他们那里获取心率数据 有人知道这样一个与手表通信的包或想法吗 目前 所有的wear tizen和watch操作系统都有不同的机制来本地获取这些数据 所有这些都需要
  • .NET 会话不工作

    这是一个奇怪的问题 但希望有人能给我一个想法 我将一些值放入会话中Session Start of the Global asax在我的应用程序中 紧接着Session Start我的基本页OnInit接到电话并尝试使用其中之一Sessio
  • jQuery Datepicker BeforeShowDay 第二个参数

    jQuery datepicker 允许您使用 BeforeShowDay 回调突出显示日期 是否可以向该方法传递第二个参数 selector datepicker beforeShowDay selectedDay function se
  • Rails 3:如何根据Controller的方法创建命名范围?

    In my ApplicationController我有demo mode 方法 返回true当当前登录的用户类型为 demo 时 Post模型有publisher id字段 它指的是Users table User有user type字
  • 对象 # 没有方法“done”

    我试图实现简单的ajax GET 请求 在回调部分我想调用一些函数 代码如下 ajax url ajax pages ajx getcard php id obj value context document body done funct
  • 启动 Rails 服务器 Sidekiq 时出错

    当我尝试启动我的服务器时 rails s 给我以下错误 管理员 rvm gems ruby 1 9 3 p392 gems bundler 1 11 2 lib bundler runtime rb 81 in rescue in bloc
  • java中私有变量的序列化

    我有一个关于序列化的问题 如果我的类有私有变量并且没有 getter 和 setter 那么序列化 API 将如何读取这些变量的值 首先 访问权限是编译时功能 访问在运行时不受控制 这可能会让您感到困惑 但请尝试执行以下操作 创建 A 类的
  • 制作等长向量的列表

    在一个关于SO的问题中 LINK https stackoverflow com questions 10661295 apply a function over groups of columns 一个海报问了一个问题 我给出了一个有效的
  • jQuery .toggle() 显示和隐藏子菜单

    我正在使用这个问题的代码来进行显示 隐藏切换 jQuery toggle 显示和隐藏子菜单 https stackoverflow com questions 9469807 jquery toggle to show and hide a
  • OSX 惯性滚动导致 mousewheel.js 通过最轻微的滚动运动注册多个鼠标滚轮事件

    我正在开发一个非常标准的 Flexslider 实例 柔性滑块 http flexslider woothemes com 与jquery mousewheel js https github com brandonaaron jquery
  • 使用 subversion 将更改提交到与当前签出分支不同的分支

    我一直在处理从开发线检出的代码 发现所做的更改可能是破坏性更改 需要在提交到主开发树之前移动到实验分支 但是 我没有签出实验分支 并且我不想丢失已经进行的更改 有没有办法将工作文件夹中的更改提交到与最初签出的分支不同的分支 您应该从已知的分
  • Three.js中是否有一个容器类型对象来转换一组孩子?

    Three js 中是否有一个容器或节点对象 可以将多个网格添加为子对象 以便它们可以一起转换 一个不可见的容器 允许对组中的所有子对象执行转换 thanks Example http mrdoob github com three js
  • 在单个查询中将行插入到多个表中,从涉及的表中进行选择

    我有两个以下形式的表 即 每个 foo 都链接到一个栏 CREATE TABLE foo id INTEGER PRIMARY KEY x INTEGER NOT NULL y INTEGER NOT NULL bar id INTEGER
  • 如何用下划线模板显示JS对象?

    我想使用下划线模板显示 JS 数据对象 我似乎无法弄清楚如何钻取对象以获取国家 地区名称或其他日期 例如 tarrifType 并使用我的模板显示它 该物体看起来像这样 var items country China tarrifType
  • 如何在 AngularJS 中使用 Web Worker?

    我在用着AngularJS 种子 https github com angular angular seed我想看看 Web Worker 的有效实现 我想让一个简单的 Web Worker 工作以便理解它 但我遇到了功能问题 我的 Web
  • 如何以编程方式从后台恢复 Android Activity

    情况 假设我当前正在启动应用程序 Activity A 一段时间后 我按下 主页 按钮 应用程序 A 进入后台 此时 我开始使用另一个应用程序 B 例如 youtube 等 当前最小化到后台的应用程序 A 中发生了一些事情 在这种情况下发生