自己写了一个闹钟实例,在Android 6.0手机上运行,按home键并锁屏后就无法正常工作。
百度了一下建议用JobScheduler去进行后台重复调用,不过实现的效果是,每次刷新以后都会打开闹钟app,不管在进行什么操作。
贴代码: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
JobScheduler mJobScheduler = (JobScheduler)getSystemService(Context.JOB_SCHEDULER_SERVICE);
JobInfo jobInfo = new JobInfo.Builder(1, new ComponentName(getPackageName(), JobSchedulerService.class.getName()))
.setPeriodic(1000*1)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
.build();
mJobScheduler.schedule(jobInfo);
}
public class JobSchedulerService extends JobService {
private String TAG ="Service";
private Handler handler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
Log.e(TAG,"start");
Toast.makeText(JobSchedulerService.this, "MyJobService", Toast.LENGTH_SHORT).show();
JobParameters param = (JobParameters) msg.obj;
jobFinished(param, true);
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
return true;
}
});
百度了一下建议用JobScheduler去进行后台重复调用,不过实现的效果是,每次刷新以后都会打开闹钟app,不管在进行什么操作。
贴代码: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
JobScheduler mJobScheduler = (JobScheduler)getSystemService(Context.JOB_SCHEDULER_SERVICE);
JobInfo jobInfo = new JobInfo.Builder(1, new ComponentName(getPackageName(), JobSchedulerService.class.getName()))
.setPeriodic(1000*1)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
.build();
mJobScheduler.schedule(jobInfo);
}
public class JobSchedulerService extends JobService {
private String TAG ="Service";
private Handler handler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
Log.e(TAG,"start");
Toast.makeText(JobSchedulerService.this, "MyJobService", Toast.LENGTH_SHORT).show();
JobParameters param = (JobParameters) msg.obj;
jobFinished(param, true);
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
return true;
}
});
解决方案 »
- 做了个免费的APP,想放到网上给Android手机用户下载使用,可以到哪发布?
- WindowManager.LayoutParams聚焦属性
- 新手学习,遇到了问题希望各位大侠拯救
- scorllview怎么判断已到底部
- 播放rtsp视频一会儿后,不能播放了
- 问个关于SIM卡存取内容大小的限制
- htc android开发待遇如何?
- android访问本地SQLServer数据库
- 求助!为什么会Unable to instantiate activity ComponentInfo
- android地图
- Android开发在Service操作SQLite数据库出现NullPointerException空指针异常
- 急需一个小型计算器的代码,有没有大神给一下
@Override
public void onClick(View view) {
c.setTimeInMillis(System.currentTimeMillis());
int mHour = c.get(Calendar.HOUR_OF_DAY);
int mMinute = c.get(Calendar.MINUTE);
new TimePickerDialog(MainActivity.this,new TimePickerDialog.OnTimeSetListener(){
public void onTimeSet(TimePicker view,int hourofDay,int minute){
c.setTimeInMillis(System.currentTimeMillis());
c.set(Calendar.HOUR_OF_DAY,hourofDay);
c.set(Calendar.MINUTE,minute);
c.set(Calendar.SECOND,0);
c.set(Calendar.MILLISECOND,0);
Intent intent = new Intent(MainActivity.this,AlarmReceiver.class);
PendingIntent sender = PendingIntent.getBroadcast(MainActivity.this,0,intent,0);
AlarmManager am;
am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),sender);
Log.e("HEHE",c.getTimeInMillis()+""); //这里的时间是一个unix时间戳
// 提示闹钟设置完毕:
Toast.makeText(MainActivity.this, "闹钟设置完毕~"+ c.getTimeInMillis(),
Toast.LENGTH_SHORT).show();
}
},mHour,mMinute,true).show();
}
});