2015-06-20 4 views
1

Я пытаюсь изучить IntentService и следовать этому примеру http://code.tutsplus.com/tutorials/android-fundamentals-intentservice-basics--mobile-6183 Я перечислил свой код. Он запускает службу, но onHandleIntent не запускается.Не удается получить пример IntentService для работы

Что я делаю неправильно?

Спасибо!

MainActivity

import android.app.Activity; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 


public class MainActivity extends Activity { 

public ResponseReceiver receiver; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    final Button button = (Button) findViewById(R.id.button); 
    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 

      EditText input = (EditText) findViewById(R.id.sisesta); 
      String strInputMsg = input.getText().toString(); 
      Intent msgIntent = new Intent(MainActivity.this, SimpleIntentService.class); 

      Log.d("proov", strInputMsg); 

      msgIntent.putExtra(SimpleIntentService.PARAM_IN_MSG, strInputMsg); 
      startService(msgIntent); 
     } 
    }); 

    IntentFilter filter = new IntentFilter(ResponseReceiver.ACTION_RESP); 
    filter.addCategory(Intent.CATEGORY_DEFAULT); 
    receiver = new ResponseReceiver(); 
    registerReceiver(receiver, filter); 
} 

public class ResponseReceiver extends BroadcastReceiver { 
    public static final String ACTION_RESP = "alar.alar.com.intentasi.MESSAGE_PROCESSED"; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     TextView result = (TextView) findViewById(R.id.textView); 
     String text = intent.getStringExtra(SimpleIntentService.PARAM_OUT_MSG); 
     result.setText(text); 
    } 
    } 
} 

сервис

import android.app.IntentService; 
import android.content.Intent; 
import android.os.SystemClock; 
import android.text.format.DateFormat; 
import android.util.Log; 
import android.widget.Toast; 

public class SimpleIntentService extends IntentService { 


public static final String PARAM_IN_MSG = "imsg"; 
public static final String PARAM_OUT_MSG = "omsg"; 

public SimpleIntentService() { 
    super("SimpleIntentService"); 
} 

@Override 
protected void onHandleIntent(Intent intent) { 

    String msg = intent.getStringExtra(PARAM_IN_MSG); 

    Log.d("proov", msg); 

    SystemClock.sleep(3000); // 3 seconds 
    String resultTxt = msg + " " 
      + DateFormat.format("MM/dd/yy h:mmaa", System.currentTimeMillis()); 

    Intent broadcastIntent = new Intent(); 
    broadcastIntent.setAction(MainActivity.ResponseReceiver.ACTION_RESP); 
    broadcastIntent.addCategory(Intent.CATEGORY_DEFAULT); 
    broadcastIntent.putExtra(PARAM_OUT_MSG, resultTxt); 
    sendBroadcast(broadcastIntent); 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    // Let it continue running until it is stopped. 
    Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show(); 
    return START_STICKY; 
    } 
} 
+1

Откуда вы знаете, что это не называется? – Blackbelt

+0

Вы добавили имя IntentService в AndroidManifest.xml? – AADProgramming

+0

У меня есть журнал, и ничего не происходит, последнее, что называется, - это Toast «Service started». – AlarMa

ответ

0

Согласно IntentService документы:

onStartCommand (Намерение Намерение, Int флаги, внутр startId)

Вы не должны переопределять этот метод для вашего IntentService.

Таким образом, вы должны удалить onStartCommand() из вашего класса (или удалить @Override, но это оставит неиспользованный метод позади).