だから私は3つのjavaファイル持っている:コードは大丈夫ですが、アプリは、Android(サービス+意図)に遅い実行されている
ServiceActivity - すべては私が定義されている(静的なint型を開始し、メインの活動を(?)以前、このファイルで)
Elserwis - >それはタイマーがオンにする必要がありますとき以来の時間となります)
Sekundo - それはサービス(それは私が私の変数を渡されましたタイマーを持っています - ユーザーが時間を置くインテント=>変数i <ここ
は主な活動からのコードの断片である - > 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問題は(onActivityResultのサブ関数として)STARTSERVICEが産む端にあると思う
他のコード断片が必要な場合は、ここに貼り付けても構いませんが、質問は です。タイマーが開始されると、アプリの起動は非常に遅く、Toast
は1分以上表示されます。誰でも知っている理由は?
EDIT:ちょうどアルファ私のコードのバージョンが、最終
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();
}
}
ザッツは同様であろう(今では私のサービスに一日についての情報を渡す - >最終版では、それは時間と分を渡す必要があります)
"サービスが起動しました!"私はonClickのからSTARTSERVICEを移動したときにトーストが年齢のためにとどまり、それはAVD上でほとんどの時間をクラッシュし、それだけで時間がかかりますが、まだそれがスムーズに動作するはずです、私の本当のスマートフォンで...
は基本的に問題は(開始しました)関数をonActivityResultに設定します。サービスはint i(新しいインテントでユーザータイプのint型)を使用して、タイマーのデータを設定します(タイマーはElserwisにあります)ので、そこにとどまる必要があります。私はサービスコードで私の最初の投稿を更新しましたので、私は何を意味するのですか?
'startService'を削除しても問題ありませんか?確かに 'startService'はブロックすべきではありませんか? 'onStartCommand'には何が入っていますか? –
プロファイリングを試しましたか? – bbaja42
私は最初の投稿を編集しましたので、もっと多くのコードを見ることができます。 – Ammo