我的任务看起来像这样:
gulp.task 'scripts', () ->
gulp.src(path.scripts)
.pipe(coffee({bare: true}).on 'error', gutil.log)
.pipe(concat 'app.min.js')
.pipe(size())
.pipe(gulp.dest 'public/js')
我的手表看起来像这样:
gulp.task 'watch', () ->
gulp.watch path.scripts, ['scripts']
只要我不尝试编译任何错误,手表就可以正常工作。如果我有一个错误,在我看来手表仍然在运行但是毫无价值地等待着什么。
如果没有错误,我会得到这样的结果:
[18:02:47] Starting 'scripts'...
[18:02:47] all files 1.05 kB
[18:02:47] Finished 'scripts' after 17 ms
但如果是错误,我只是吞下它:
[18:03:33] Starting 'scripts'...
它永远不会完成,即使控制台认为它正在运行,手表也不再有效。建议?
答案 0 :(得分:1)
为了能够在错误后继续执行,您需要发出'end'事件。试试这个:
package ram.materialnavigation;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class AlarmActivity extends Activity {
//used for register alarm manager
PendingIntent pendingIntent;
//used to store running alarmmanager instance
AlarmManager alarmManager;
//Callback function for Alarmmanager event
BroadcastReceiver mReceiver;
SharedPreferences sp;
// int id;
// String time;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.alarm_layut);
// sp = getSharedPreferences("sp", MODE_PRIVATE);
//Register AlarmManager Broadcast receive.
// RegisterAlarmBroadcast();
}
public void onClickSetAlarm(View v) {
// SimpleDateFormat sdf = new SimpleDateFormat("dd-M-yyyy hh:mm:ss a");
// String dateString = "06-09-2015 12:35:30 pm";
// try {
// Date date = sdf.parse(dateString);
// Calendar calendar = Calendar.getInstance();
// calendar.setTime(date);
// long timeMilli = calendar.getTimeInMillis();
//
// sp.edit().putLong("timeId", timeMilli).apply();
// Log.d("AlarmTIme",timeMilli+"");
//
// for (int i = 0; i < 5; i++) {
// long timeFromSP = sp.getLong("timeId", i) + (i * 1000);
// RegisterAlarmBroadcast(timeFromSP, 0);
// }
//
// } catch (ParseException e) {
// e.printStackTrace();
// }
Calendar calendar = Calendar.getInstance();
for (int i = 1; i <= 3; i++) {
RegisterAlarmBroadcast(calendar.getTimeInMillis() + i * 10000, i);
}
}
private void RegisterAlarmBroadcast(long time, int requestCode) {
Log.i("RegisterAlarmBroadcast", "Going to register Intent.RegisterAlramBroadcast");
//This is the call back function(BroadcastReceiver) which will be call when your
//alarm time will reached.
mReceiver = new BroadcastReceiver() {
private static final String TAG = "Alarm Example Receiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "BroadcastReceiver::OnReceive() >>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
String value = intent.getStringExtra("value");
Toast.makeText(context, value, Toast.LENGTH_SHORT).show();
startActivity(new Intent(AlarmActivity.this, MainActivity.class));
}
};
// register the alarm broadcast here
IntentFilter intentFilter = new IntentFilter("com.ronem");
registerReceiver(mReceiver, intentFilter);
Intent intent = new Intent("com.ronem");
intent.putExtra("value", "Time request code" + requestCode);
pendingIntent = PendingIntent.getBroadcast(this, requestCode, intent, 0);
alarmManager = (AlarmManager) (this.getSystemService(Context.ALARM_SERVICE));
alarmManager.set(AlarmManager.RTC_WAKEUP, time, pendingIntent);
}
private void UnregisterAlarmBroadcast() {
alarmManager.cancel(pendingIntent);
getBaseContext().unregisterReceiver(mReceiver);
}
}