Android 如何自动触发报警管理器本身而不是onClick
下面是我的代码,它工作得很好。我使用报警管理器点击按钮10秒后呼叫服务。我想让这个过程自动化,比如说每10分钟它应该自己触发一次,并呼叫服务,而不管设备处于屏幕关闭或屏幕打开状态。目前,我还怀疑调用来自“活动”,因此,如果我关闭应用程序,它将不会触发Android 如何自动触发报警管理器本身而不是onClick,android,triggers,alarmmanager,Android,Triggers,Alarmmanager,下面是我的代码,它工作得很好。我使用报警管理器点击按钮10秒后呼叫服务。我想让这个过程自动化,比如说每10分钟它应该自己触发一次,并呼叫服务,而不管设备处于屏幕关闭或屏幕打开状态。目前,我还怀疑调用来自“活动”,因此,如果我关闭应用程序,它将不会触发 /*MainActivity.java*/ package com.example.alarmservice; public class MainActivity extends Activity implements OnClickListen
/*MainActivity.java*/
package com.example.alarmservice;
public class MainActivity extends Activity implements OnClickListener{
final static private long ONE_SECOND = 1000;
final static private long TEN_SECONDS = ONE_SECOND * 10;
PendingIntent pi;
BroadcastReceiver br;
AlarmManager am;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setup();
findViewById(R.id.the_button).setOnClickListener(this);
}
private void setup() {
br = new BroadcastReceiver() {
@Override
public void onReceive(Context c, Intent i) {
Toast.makeText(c, "Rise and Shine!", Toast.LENGTH_LONG).show();
}
};
registerReceiver(br, new IntentFilter("com.example.alarmservice"));
//pi = PendingIntent.getBroadcast( this, 0, new Intent("com.authorwjf.wakeywakey"),0);
//am = (AlarmManager)(this.getSystemService( Context.ALARM_SERVICE ));
Intent intent = new Intent(MainActivity.this, ServiceClass.class);
pi = PendingIntent.getService(MainActivity.this, 0, intent, 0);
am = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
am.set( AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + TEN_SECONDS, pi);
}
@Override
protected void onDestroy() {
am.cancel(pi);
unregisterReceiver(br);
super.onDestroy();
}
}
服务等级
/*ServiceClass.java*/
package com.example.alarmservice;
public class ServiceClass extends Service {
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
Log.d("Testing", "Service got created");
Toast.makeText(this, "ServiceClass.onCreate()", Toast.LENGTH_LONG).show();
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}
@Override
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
super.onStart(intent, startId);
Toast.makeText(this, "ServiceClass.onStart()", Toast.LENGTH_LONG).show();
Log.d("Testing", "Service got started");
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
}
我有很多朋友。只需替换这一行am.set(AlarmManager.Appeased\u REALTIME\u WAKEUP,SystemClock.elapsedRealtime()+十秒,pi);使用下面的行am.SETREPECTING(AlarmManager.RTC_唤醒,SystemClock.elapsedRealtime(),10_秒,pi);如何在清单文件中指定此应用程序的收件人?