Не запускается сервер из клиента (не видно в процессах). Сервер устанавливается вроде нормально... done etc.... Клиент пишет в логе ошибку (см. лог).
Запуск сервиса - MainActivity - стр. 74. Запуск из фрагмента. Может из-за этого... Хотя, мало вероятно.
Помогите разобраться.
Манифест прописал - Service, Intend
Error.log
[syntax=xml]05-02 12:06:58.025: W/ContextImpl(1152): Implicit intents with startService are not safe: Intent { act=com.example.p0942_servicekillserver.MyService (has extras) } android.content.ContextWrapper.startService:494 com.example.p0941_servicekillclient.MainActivity$PlaceholderFragment.onClick:74 android.view.View.performClick:4438
05-02 12:06:58.195: W/ActivityManager(374): Unable to start service Intent { act=com.example.p0942_servicekillserver.MyService (has extras) } U=0: not found[/syntax]
MainActivity.java (Client)
[syntax=java5]package com.example.p0941_servicekillclient;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment implements
OnClickListener {
Button btnStart;
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container,
false);
btnStart = (Button) rootView.findViewById(R.id.btnStart);
btnStart.setOnClickListener(this);
return rootView;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnStart:
Log.d("myLogs", "btnStart");
getActivity().startService(new Intent(
"com.example.p0942_servicekillserver.MyService")
.putExtra("name", "value"));
break;
default:
break;
}
}
}
}
[/syntax]
Manifest Server
[syntax=java5]<manifest xmlns:android="
http://schemas.android.com/apk/res/android"
package="com.example.p0942_servicekillserver"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="11" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<service android:name="MyService">
<intent-filter android:label="com.example.p0942_servicekillserver.MyService">
</intent-filter>
</service>
</application>
</manifest>[/syntax]
MyService.java
[syntax=java5]package com.example.p0942_servicekillserver;
import java.util.concurrent.TimeUnit;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
public class MyService extends Service {
final String LOG_TAG = "myLogs";
public void onCreate() {
super.onCreate();
Log.d(LOG_TAG, "MyService onCreate");
}
public void onDestroy() {
super.onDestroy();
Log.d(LOG_TAG, "MyService onDestroy");
}
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d(LOG_TAG, "MyService onStartCommand");
readFlags(flags);
MyRun mr = new MyRun(startId);
new Thread(mr).start();
return START_NOT_STICKY;
}
public IBinder onBind(Intent arg0) {
return null;
}
void readFlags(int flags) {
if ((flags & START_FLAG_REDELIVERY) == START_FLAG_REDELIVERY)
Log.d(LOG_TAG, "START_FLAG_REDELIVERY");
if ((flags & START_FLAG_RETRY) == START_FLAG_RETRY)
Log.d(LOG_TAG, "START_FLAG_RETRY");
}
class MyRun implements Runnable {
int startId;
public MyRun(int startId) {
this.startId = startId;
Log.d(LOG_TAG, "MyRun#" + startId + " create");
}
public void run() {
Log.d(LOG_TAG, "MyRun#" + startId + " start");
try {
TimeUnit.SECONDS.sleep(15);
} catch (InterruptedException e) {
e.printStackTrace();
}
stop();
}
void stop() {
Log.d(LOG_TAG, "MyRun#" + startId + " end, stopSelfResult("
+ startId + ") = " + stopSelfResult(startId));
}
}
}[/syntax]