我需要一个服务来调用另一个类中的方法。会是什么?

时间:2013-09-27 20:54:26

标签: android android-service

嗨,谢谢你的帮助。

这是我的情景。

我需要通过AlarmManager安排闹钟。

警报的安排需要同时发生

  1. 应用程序运行时
  2. 当手机开机时。在这种情况下,我通过BOOT接收器启动服务。
  3. 现在,在展位的情况下,我需要调用某个类的方法来传递我想要安排的事件。

    考虑到

    • 该方法将我创建的Event对象作为输入
    • 该方法需要由运行活动或服务调用,具体取决于具体情况

    我的问题是:我需要创建什么样的对象(包含上述方法)?

    活动?不这么认为......

    服务?不这么认为

    请问我能用什么?

1 个答案:

答案 0 :(得分:2)

我已经实现了类似的东西。在我的应用程序中,BroadcastReceiver收到警报(Intent),然后启动传递一些参数的激活。

这是我的一段代码。让它成为通过和接收参数的部分

public class AlarmReceiver extends BroadcastReceiver{

@Override
public void onReceive(Context c, Intent i) {
    int answerType = i.getExtras().getInt("answerType");
    Intent intent = new Intent(arg0, ReminderActivity.class);
    intent.putExtra("id", i.getExtras().getInt("id")); 
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    c.startActivity(intent);
   }

}

我写了一个名为ReminderManger的类,其中包含一个设置Alarm的方法。像这样:

public void setAlarm(Notification n){

        Intent intent = new Intent(reminderContext, AlarmReceiver.class);
        intent.putExtra("id",n.ID); 
        intent.putExtra("answerType",n.AnswerType);

        int execTimeInt = Integer.parseInt(n.ExecutionTimespan); 
        long execTime = (long)execTimeInt;
        execTime = execTime*1000;

        PendingIntent pendingIntent = PendingIntent.getBroadcast(reminderContext, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
        currentPendingIntent = pendingIntent;
        AlarmManager alarmManager = (AlarmManager)reminderContext.getSystemService(reminderContext.ALARM_SERVICE);
        currentAlarm = alarmManager;

        if(execTime < System.currentTimeMillis() && System.currentTimeMillis() - execTime < NOTIFICATION_THRESHOLD)
        {
            alarmRunning = true;
            alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+EXECUTION_DELAY,pendingIntent);
        }

    }