بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
اجرای اپلیکیشن در ساعت مشخص شده
چه طور میشه اپلیکیشن در ساعتی مثل 8 صبح اتومات اجرا بشه؟
ویا اگر pouse شده در ساعت 8 صبح چه طور onresume بشه؟
اینجا زمان رو گرفتم و پایین گفتم اگر 8 بود کارتو انجام بده ولی در اون زمان اپلیکیشن onresume نمیشه.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Time today = new Time(Time.getCurrentTimezone());
today.setToNow();
}
public void doItYourWork(){
.
.
}
protected void onResume() {
super.onResume();
if (today.format("%k:%M:%S") == "8:00:00") {
doItYourWork();
Log.i("LOG", "resume" + today.format("%k:%M:%S"));
return;
}
}
+2
0
لینک (11 سال پیش)
برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال
f-Dehghan
11 سال پیش
0
0
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Calendar calendar = Calendar.getInstance();
// 11:59 PM
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 0);
PendingIntent pi = PendingIntent.getBroadcast(TestActivity.this, 0, new Intent(TestActivity.this, MyClass.class), PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) TestActivity.this.getSystemService(Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);
}
public class MyClass extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
startwork();
Log.i("LOG", "its resume");
}
}
public void startwork() {
//somecode
}
این کد رو زدم جواب نمیده.مشکلی داره؟
توی منیفست پرمیشن خاصی باید داد ؟
پاسخ به سوال
f-Dehghan
11 سال پیش
+2
0
این طوری مشکل حل شد.ممنون از آقای حامد.
این کلاس رو نوشتم و در activity صداش کردم.
public class Alarm {
Timer _timer;
Date alarmTime;
public Alarm() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 11);
calendar.set(Calendar.MINUTE, 45);
calendar.set(Calendar.SECOND, 00);
alarmTime = calendar.getTime();
_timer = new Timer();
_timer.schedule(new AlarmTask(), alarmTime);
}
class AlarmTask extends TimerTask {
/**
* Called on a background thread by Timer
*/
@Override
public void run() {
Log.i("LOG", "timerreset wall is " + alarmTime);
_timer.cancel();
}
}
}
اگر برنامتون یادآور یا موارد مشابه هست استفاده از Timer اصلا توصیه نمیشه، از AlarmManager استفاده کنید. لینک (11 سال پیش)
حرفتون درست بود .باید از AlarmManager استفاده کنم.این لینک رو ببینید.
لینک MyAppReciever باید در کلاس خارج از اکتیویتی تعرف شود؟اگر این طوره چه طوری متدی که توی اکتیویتی هست توی این onReceive صدا کنم؟ (11 سال پیش)
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .