2013-11-10 2 views
0

앱을 개발 중입니다. 어느 작업 내에서 작업자 스레드를 사용하고 있습니다. 내 애플 리케이션과 몇 가지 문제가 있고 무슨 디버깅 태그를 사용하여 문제인지 알아 내려고. 하지만 logcat은 스레드 안에있는 태그를 표시하지 않습니다. 나는 초보자는 너무 그것에 대해 잘 모른다입니다 .. 여기 Logcat에 디버깅 태그가 표시되지 않습니다.

코드입니다 ..

package com.example.forgetmenot; 

import java.util.ArrayList; 
import java.util.Calendar; 

import android.app.Service; 
import android.content.Intent; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.os.Handler; 
import android.os.IBinder; 
import android.util.Log; 
import android.widget.Toast; 

public class BirthdayService extends Service{ 

    SQLiteDatabase db; 
    BirthdayDatabase myDatabase = new BirthdayDatabase(this, null, null, 0); 
    private ArrayList<String> data = new ArrayList<String>(); 
    Handler handler = new Handler(); 
    String form[] ={"_id","name","contact","day","month","year"}; 
    String TAG = "Debug"; 
    @Override 
    public IBinder onBind(Intent arg0) { 

     return null; 
    } 

    @Override 
    public void onCreate() { 
//  Toast.makeText(this,"birthday Service started", Toast.LENGTH_SHORT).show(); 
     super.onCreate(); 
    } 

    @Override 
    public void onDestroy() { 

     super.onDestroy(); 
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     Calendar cal = Calendar.getInstance(); 

     new Thread(new Runnable() { 

      @Override 
      public void run() { 
       Calendar cal = Calendar.getInstance(); 
       int mDay = cal.get(Calendar.DAY_OF_MONTH); 
       int mMonth = cal.get(Calendar.MONTH); 
       Log.d(TAG, "Current day: "+mDay); 
       Log.d(TAG,"Current month: "+mMonth); 
       int birthDay = 0; 
       int birthMonth = 0; 
       final Cursor mycursor = db.query("birthdays", form, null, null, null, null, null, null); 
       while(mycursor.moveToNext()){ 
        birthDay = mycursor.getInt(3); 
        birthMonth = mycursor.getInt(4); 
        Log.d(TAG, "birhDay:"+birthDay); 
        Log.d(TAG, "birthMonth:"+birthMonth); 
        if(mDay == birthDay && mMonth == birthMonth) 
        { 
         handler.post(new Runnable() { 

          @Override 
          public void run() { 

           Toast.makeText(getBaseContext(), "Happy Birthday "+mycursor.getString(1), Toast.LENGTH_SHORT).show(); 
          } 

         }); 

         db.close(); 
         break; 
        } 
       } 
       db.close(); 

      } 

     }); 

     Toast.makeText(this, "BirthdayService", Toast.LENGTH_SHORT).show(); 
     return 0; 
    } 

} 

답변

0

당신이 onStartCommand에서 만든 스레드를 시작하십시오.

+0

고마워,이 스레드를 시작하는 것을 잊어 버렸습니다 ... 어떤 어린애의 실수. –

0

당신은 당신이 한 여전히 경우 에뮬레이터 나 장치, 장치 정보 탭에 을 선택하는 것을 확인해야 그것을 찾은 다음 adb를 재설정하고 에뮬레이터를 선택하고 다시 시도하십시오.

같은 문제가 계속 발생하면 이클립스 또는 adb를 다시 시작하십시오.

+0

당신은 무엇을 설명하고 있느냐가 중요하지 않습니다. 문제는 태그가 작업자 스레드 안에 있다는 것입니다. 작업자 내부의 태그는 logcat에 값을 표시합니다. –

관련 문제