【问题标题】:How to open activity using alarm manager even when the app is killed?即使应用程序被杀死,如何使用警报管理器打开活动?
【发布时间】:2016-03-29 05:04:15
【问题描述】:

我有一个要求,我需要在特定时间打开一个活动并执行特定任务,即使应用程序被终止也是如此。即使从多任务窗口窗格中删除应用程序也是如此。

到目前为止,我正在使用警报管理器来完成此任务,如下所示。

Intent myIntent = new Intent(getBaseContext(),MyScheduledReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(),
           0, myIntent, 0);
AlarmManager alarmManager
          = (AlarmManager)getSystemService(ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 10);
long interval = 60 * 1000; //
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(), interval, pendingIntent);
finish();

onReceive方法如下:

public void onReceive(Context context, Intent intent) {
 // TODO Auto-generated method stub

 Intent scheduledIntent = new Intent(context, MyScheduledActivity.class);
 scheduledIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 context.startActivity(scheduledIntent);

}

问题是,当应用程序处于后台时,它会打开活动。在关闭或不在后台堆栈(多任务窗格)中时不是。

请轻点我。我在挣扎。

Android 清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.exercise.AndroidScheduledActivity"
    android:versionCode="1"
    android:versionName="1.0">
  <uses-sdk android:minSdkVersion="4" />

  <application android:icon="@drawable/icon" android:label="@string/app_name">
      <activity android:name=".AndroidScheduledActivity"
                android:label="@string/app_name">
          <intent-filter>
              <action android:name="android.intent.action.MAIN" />
              <category android:name="android.intent.category.LAUNCHER" />
          </intent-filter>
      </activity>
      <activity android:name=".MyScheduledActivity" />
      <receiver android:process=":remote"
                android:name="MyScheduledReceiver" />
  </application>
</manifest>

【问题讨论】:

  • 能否请您发布您的清单文件和日志
  • @Jois,我已经添加了清单文件。
  • 你到底想在应用关闭后什么时候触发广播接收器??
  • broadcastReceiver 将根据时间触发。例如,每隔一小时左右说一次。在此期间,如果应用程序关闭,我需要打开活动并执行常规任务
  • 在 myIntent 构造函数中将 getBaseContext 更改为 getApplicationContext()

标签: android android-activity alarmmanager


【解决方案1】:

在其中启动服务和您的警报代码。警报完成后,通过通知或按照您的逻辑启动您的应用程序。

【讨论】:

    【解决方案2】:

    您应该使用服务,通过服务打开您的活动。 Service

    【讨论】:

    • 。我们可以利用警报管理器和服务来设置时间吗?我需要在特定时间开始活动或执行某些任务。
    • 是的,你可以这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多