我想使用Alarm manager在另一个活动中调用方法 我使用广播呼叫报警管理器 我想要在没有ui的情况下调用activityAlarm(只是报警方法) 我不想要打开ui, 我该怎么办?
public class ReciveData extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent arg1) {
Intent myIntent = new Intent(G.context, ActivityAlarm.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(G.context, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
G.alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 2000, 3000, pendingIntent);
}
}
和此:
public class ActivityAlarm extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
alarm();
}
public void alarm() {
Log.i("LOGALARM", "Hello");
}
}
答案 0 :(得分:1)
((ActivityAlarm)getActivity())。alarm();
这应该适合你。
答案 1 :(得分:1)
要在没有用户界面的情况下进行调用,您应该使用BroadcastReceiver
或Service
,而不是Activity
:
而不是:
Intent myIntent = new Intent(G.context, ActivityAlarm.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(G.context, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
你应该这样称呼:
Intent myIntent = new Intent(G.context, YourReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(G.context, 0, myIntent, 0);
这样就没有用户界面(因为它不会启动活动),你可以将alarm
方法放到BroadcastReceiver
有关BroadcastReceiver
:https://developer.android.com/reference/android/content/BroadcastReceiver.html