【附】相关架构及资料
源码、笔记、视频。高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter全方面的Android进阶实践技术,和技术大牛一起讨论交流解决问题。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.text.style.ImageSpan;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.TimePicker;
public class MainActivity extends Activity {
private TextView tv = null;
private Button setTime,cancelTime;
private Calendar c = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String alarm = getIntent().getStringExtra(“alarm”);
if(alarm != null&&alarm.equals(“alarm”)){
stopService(new Intent(“com.yqy.yqy_alarm.MUSIC”));
}
tv = (TextView)findViewById(R.id.tv);
setTime = (Button)findViewById(R.id.setAlarm);
cancelTime = (Button)findViewById(R.id.cancelAlarm);
//得到日历实例,主要是为了下面的获取时间
c = Calendar.getInstance();
setTime.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View arg0) {
c.setTimeInMillis(System.currentTimeMillis());
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
new TimePickerDialog(MainActivity.this, minute, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
//是设置日历的时间,主要是让日历的年月日和当前同步
c.setTimeInMillis(System.currentTimeMillis());
//设置小时分钟,秒和毫秒都设置为0
c.set(Calendar.HOUR_OF_DAY, hourOfDay);
c.set(Calendar.MINUTE, minute);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
int requestCode = 0;//闹钟的唯一标示
Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
intent.putExtra(“requestCode”, requestCode);
PendingIntent pi = PendingIntent.getBroadcast(MainActivity.this, requestCode, intent, 0);
//得到AlarmManager实例
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
//根据当前时间预设一个警报
am.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pi);
/**
-
第一个参数是警报类型;第二个参数是第一次执行的延迟时间,可以延迟,也可以马上执行;第三个参数是重复周期为一天
-
这句话的意思是设置闹铃重复周期,也就是执行警报的间隔时间
*/
// am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+(60*1000),
// (246060*1000), pi);
// am.setRepeating(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(),
// 1000605, pi);
String msg = hourOfDay+“:”+minute;
tv.setText(“当前设置的闹钟时间:”+msg);
}
}, hour, minute, true).show();
//上面的TimePickerDialog中的5个参数参考:http://blog.csdn.net/yang_hui1986527/article/details/6839342
}
});
cancelTime.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(MainActivity.this, 0,
intent, 0);
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
//取消警报
am.cancel(pi);
tv.setText(“闹钟取消”);
//取消闹钟的同时取消音乐
stopService(new Intent(“com.yqy.yqy_alarm.MUSIC”));
}
});
}
}
AlarmReceiver
package com.yqy.yqy_alarm;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class AlarmReceiver extends BroadcastReceiver {
Intent intent;
int requestCode = -1;
@Override
public void onReceive(Context context, Intent arg1) {
requestCode = arg1.getIntExtra(“requestCode”, 0);
总结
学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!
最后如何才能让我们在面试中对答如流呢?
答案当然是平时在工作或者学习中多提升自身实力的啦,那如何才能正确的学习,有方向的学习呢?有没有免费资料可以借鉴?为此我整理了一份Android学习资料路线:
这里是一部分我工作以来以及参与过的大大小小的面试收集总结出来的一套BAT大厂面试资料专题包,主要还是希望大家在如今大环境不好的情况下面试能够顺利一点,希望可以帮助到大家。
好了,今天的分享就到这里,如果你对在面试中遇到的问题,或者刚毕业及工作几年迷茫不知道该如何准备面试并突破现状提升自己,对于自己的未来还不够了解不知道给如何规划。来看看同行们都是如何突破现状,怎么学习的,来吸收他们的面试以及工作经验完善自己的之后的面试计划及职业规划。
最后,祝愿即将跳槽和已经开始求职的大家都能找到一份好的工作!
这些只是整理出来的部分面试题,后续会持续更新,希望通过这些高级面试题能够降低面试Android岗位的门槛,让更多的Android工程师理解Android系统,掌握Android系统。喜欢的话麻烦点击一个喜欢再关注一下~
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
让更多的Android工程师理解Android系统,掌握Android系统。喜欢的话麻烦点击一个喜欢再关注一下~
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!