【问题标题】:Pending intent only allow me use an Activity, no Asynctask allowed待定意图只允许我使用 Activity,不允许使用 Asynctask
【发布时间】:2016-07-15 14:45:01
【问题描述】:

这是有问题的代码部分:

Intent intent = new Intent(MyGcmListenerService.this, CalcularHorariosDisponiblesComplejo.class);
    intent.putExtra("idComplejo",idComplejoSeleccionado);
    intent.putExtra("idCancha",idCanchaSeleccionada);
    intent.putExtra("idUsuarioComplejo",idUsuarioComplejo);
    intent.putExtra("idPais",idPais);
    intent.putExtra("nombreComplejo", nombreComplejo);
    intent.putExtra("dia",day);
    intent.putExtra("mes",month);
    intent.putExtra("anio",year);

    PendingIntent resultPendingIntent =
            PendingIntent.getActivity(
                    MyGcmListenerService.this,
                    m,
                    intent,
                    PendingIntent.FLAG_UPDATE_CURRENT
            );//creamos la notificacion
    NotificationCompat.Builder n  = new NotificationCompat.Builder(MyGcmListenerService.this)
            .setContentTitle(titulo)
            .setSound(uri)
            .setSmallIcon(R.drawable.notification_icon)
            .setLargeIcon(bm)
            .setStyle(new NotificationCompat.BigTextStyle().bigText("El usuario " + nombreOrigen + " " + mensaje))
            .setContentIntent(resultPendingIntent)
            .setAutoCancel(true);
    NotificationManager notificationManager =
            (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    notificationManager.notify(m, n.build());
}

pendingIntent 效果很好,但我将 CalcularHorariosDisponiblesComplejo.class 更改为 AsyncTask。现在我这样称呼同一个类:

        new CalcularHorariosComplejoAsyncTask(MyGcmListenerService.this, idComplejoSeleccionado, idCanchaSeleccionada, nombreComplejo, idUsuarioComplejo, idPais, String.valueOf(day),String.valueOf(month),String.valueOf(year)).execute();

现在我不能使用挂起的意图的问题,所以我尝试替换这样的东西但不起作用:

PendingIntent resultPendingIntent =
        PendingIntent.getActivity(
                MyGcmListenerService.this,
                m,
                new CalcularHorariosComplejoAsyncTask(MyGcmListenerService.this, idComplejoSeleccionado, idCanchaSeleccionada, nombreComplejo, idUsuarioComplejo, idPais, String.valueOf(day),String.valueOf(month),String.valueOf(year)).execute(),
                PendingIntent.FLAG_UPDATE_CURRENT);

如何从 PendingIntent 调用 Asynctask?

【问题讨论】:

  • 你为什么不使用 IntentService 来代替?
  • @MiguelBenitez 我不知道,这是最好的解决方案吗?如果您认为是,请给出解决方案。谢谢
  • 解决办法是PendingIntent.getService()
  • 检查发布的代码。

标签: android android-asynctask android-pendingintent


【解决方案1】:

在清单文件中声明:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.app" >
        ...
        <service android:name="YOUR_APP_PACKAGE.CalcularHorariosComplejoService">
        </service>
    </application>
</manifest>

创建 IntentService:

public class CalcularHorariosComplejoService extends IntentService {
    public CalcularHorariosComplejoService() {
        super("CalcularHorariosComplejoService");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        //Calculo de horarios complejos

    }
}

并创建待处理的意图

Intent intent = new Intent(MyGcmListenerService.this, YOUR_APP_PACKAGE.CalcularHorariosComplejoService.class);
    intent.putExtra("idComplejo",idComplejoSeleccionado);
    intent.putExtra("idCancha",idCanchaSeleccionada);
    intent.putExtra("idUsuarioComplejo",idUsuarioComplejo);
    intent.putExtra("idPais",idPais);
    intent.putExtra("nombreComplejo", nombreComplejo);
    intent.putExtra("dia",day);
    intent.putExtra("mes",month);
    intent.putExtra("anio",year);

PendingIntent pending = PendingIntent.getService(MyGcmListenerService.this, 0, intent, 0);

【讨论】:

  • 问题是我没有Activity!我有一个 Asynctask 要调用,没有活动。
  • 服务和通知运行完美。唯一的问题是,在单击通知时,服务必须调用 Asynctask,在我更改代码之前没有 Activity
  • 它不是一个活动,是一个 IntentService:IntentService (android.app.IntentService) 是一种简单的服务类型,可用于通过 Intent 请求处理主线程之外的异步工作。
  • 好的,但我有一个错误:“CalcularHorariosComplejoService 不是封闭类”
  • 我的错:PendingIntent pending = PendingIntent.getService(MyGcmListenerService.this, 0, intent, 0);
猜你喜欢
  • 1970-01-01
  • 2018-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2021-08-05
  • 2012-10-24
相关资源
最近更新 更多