我创建了一个简单的广播接收器,其唯一目的是当手机启动时启动一个警报管理器方法,我将其隐藏在处理这样的应用程序范围的任务的扩展应用程序文件中,当我从一个活动中调用它时这很好用但是,当我试图从广播接收器中调用它时它会崩溃并且不起作用,我想的是,或许我需要以某种方式将上下文附加到它上面?
这是我的代码:
package com.testapp21.second.activities;
import com.testapp21.second.OTweetApplication;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class PhoneOnReceiver extends BroadcastReceiver {
private OTweetApplication app;
@Override
public void onReceive(Context context, Intent intent) {
app.startChecks();
}
}
编辑:startChecks然后委托给一个名为startCheckshelper()的帮助文件中的方法,这里的代码块是这样的:
public void startCheckshelper(){
mAlarmSender = PendingIntent.getService(context,
0, new Intent(context, CheckerService.class), 0);
// We want the alarm to go off 30 seconds from now.
long firstTime = SystemClock.elapsedRealtime();
// Schedule the alarm!
AlarmManager am = (AlarmManager)context.getSystemService(Service.ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
firstTime, 60*1000, mAlarmSender);
}
答案 0 :(得分:1)
在询问Android中的崩溃时,您应该始终发布堆栈跟踪以及问题,但看起来app
从未初始化,但您在onReceive
中使用它。
答案 1 :(得分:1)
您从未初始化/分配给app
的内容,因此它为空:
private OTweetApplication app;
当你打电话给它(app.startChecks();
)时,你会得到例外。