-1

ここにコードがあります:

public class MyServeice extends Service 
{
    private Timer pushTimer;
    private final int NOTEF_ID = 1234;
    NotificationManager manager;

    @Override
    public IBinder onBind(Intent arg0) 
    {
        return null;
    }

    @Override
    public void onCreate() 
    {
        Log.i("MyActivity", "1");
        //pushTimer = new Timer();
        manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
    }

    @Override
    public void onDestroy() 
    {
        Log.i("MyActivity", "2");
        //pushTimer.cancel();
    }

    @Override
    public void onStart(Intent intent, int startid) 
    {
        Log.i("MyActivity", "3");
        //pushTimer.schedule(new TimerTask()
        //{
        //  @Override
        //  public void run() 
        //  {
                Notification not = new Notification(R.drawable.ic_launcher, "Custom notification", System.currentTimeMillis());
                PendingIntent notIntent = PendingIntent.getActivity(this , 0, new Intent(this, MainActivity.class), 0);
                not.setLatestEventInfo(this,  "Title", "Text", notIntent);
                manager.notify(NOTEF_ID, not);
                manager.cancel(NOTEF_ID);
        //  }
        //}, 0L, 60L * 1000);
    }

}

MainActivityアクティビティクラスから開始しようとしています(問題がタイマーにあると思う前に、今はコメントしています)。ここでコードを開始します:

startService(new Intent(this, MyServeice.class));

サービスクラスからのログが表示されないので、サービスをまったく開始しないことにしました。アプリケーションがクラッシュせず、正常に起動します。私のコードを確認できますか?

4

3 に答える 3

0

MyServeiceクラスでミスをしました

あなたが使う

 @Override
 public void onStart(Intent intent, int startid) 

サービスライフサイクルにはonStart(..)メソッドはありません

上記の代わりにこの方法を試してください

  @Override
  public int onStartCommand(Intent intent, int flags, int startId) 

編集:

&2番目のマニフェストファイルでサービスを宣言する必要があります。

<manifest ... >
  ...
  <application ... >
      <service android:name=".MyServeice" />
      ...
  </application>
</manifest>

サービスの詳細については、このドキュメントを参照してください http://developer.android.com/guide/components/services.html

于 2013-01-21T12:53:12.813 に答える
0

この方法を使用してください:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {}

ここにサービスについての良いチュートリアルがあります:ここをクリックしてください!

于 2013-01-21T13:01:42.860 に答える
-2

質問は終了しました。サービスクラスに関する情報をマニフェストに追加すると、問題が解決しました。

于 2013-01-21T13:01:58.417 に答える