Итак, у меня есть 3 java-файла:
ServiceActivity - основная деятельность, с которой все начинается (static int i определено ранее в этом файле)
Elserwis - это служба (в ней есть таймер, в котором я передал переменную i -> это будет час с момента, когда таймер должен включиться)
Sekundo - намерение, в которое пользователь помещает переменную hour =>> i <</p>
Вот фрагмент кода из основной деятельности -> ServiceActivity:
private OnClickListener startListener = new OnClickListener() {
public void onClick(View v){
Intent intent = new Intent(getApplicationContext(), Sekundo.class);
startActivityForResult(intent,1337);
}
};
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data ) {
/* Place out code to react on Activity-Result here. */
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1337){
i=data.getIntExtra("result",5);
Toast tost = Toast.makeText(getApplicationContext(), "ELO"+data.getIntExtra("result",0)+data.getIntExtra("result1",0), 1000);
tost.show();
startService(new Intent(SerwisActivity.this,Elserwis.class));
}
}
Iдумаю, что проблема в конце, где лежит startService (как подфункция onActivityResult)
Если вам нужен любой другой фрагмент кода, я могу вставить его здесь, но вопрос в том, что мое приложение работает очень медленноначало, когда запускается таймер, и Toast
отображается более 1 минуты.Кто-нибудь знает почему?
РЕДАКТИРОВАТЬ:
public class Elserwis extends Service {
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
super.onCreate();
okresowePowiadomienie();
Toast.makeText(getApplicationContext(),"Service LAUNCHED!", 1000).show();
}
Date data33 = new Date(111,11,SerwisActivity.i,2,25);
int d = data33.getDate();
Timer timer = new Timer();
public void okresowePowiadomienie(){
TimerTask timerTask = new TimerTask(){
public void run() {
NotificationManager notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Notification notification = new Notification(R.drawable.ic_launcher,"OKRes",System.currentTimeMillis());
Intent notIntent = new Intent(getApplicationContext(), SerwisActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(), 0, notIntent, 0);
notification.setLatestEventInfo(getApplicationContext(),"Powiadomienie x:","Kliknij aby d:usunac ;)t:"+d,contentIntent);
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notificationManager.notify(1335, notification);
// } };
}};
timer.scheduleAtFixedRate(timerTask ,data33 , 120000); }
@Override
public void onDestroy() {
super.onDestroy();
timer.cancel();
Toast.makeText(this, "Service dead!", Toast.LENGTH_LONG).show();
}
}
это просто альфа-версия моего кода, но final будет аналогичным (теперь он только передает информацию о дне на мой сервис -> в окончательной версиидолжно пройти час и минута)
"Служба запущена!"тост остается целую вечность, он падает в большинстве случаев на AVD, на моем реальном смартфоне это просто занимает много времени, но все равно он должен работать плавно ...
В основном проблема началась, когда я переместил startService изФункция onClick () ДО элемента onActivityResult.Он должен оставаться там, потому что сервис использует int i (пользователь вводит типы int i в новом намерении), чтобы установить данные для моего таймера (таймер находится в Elserwis).Я обновил свой первый пост с сервисным кодом, чтобы вы могли понять, что я имею в виду