Pemula, saya menghadapi masalah pada permulaan pembelajaran Perkhidmatan
Saya melakukannya mengikut tutorial, dan ia ranap semasa memulakan perkhidmatan
MyService.java
pakej com.contoh.pentadbir.myhhhhh;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
MyService kelas awam melanjutkan Perkhidmatan {
public MyService() {
}
@Override
public void onCreate() {
Log.i("LOG","onCreat");
super.onCreate();
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}
}
MainActivity.java
pakej com.contoh.pentadbir.myhhhhh;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
MainActivity kelas awam melanjutkan AppCompatActivity melaksanakan View.OnClickListener{
private Button start,stop;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button start=(Button)findViewById(R.id.button);
Button stop=(Button)findViewById(R.id.button2);
start.setOnClickListener(this);
stop.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Intent intent=new Intent("MyService");
switch (v.getId()){
case R.id.button:
startService(intent);
break;
case R.id.button2:
stopService(intent);
break;
}
}
}
Manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.administrator.myhhhhh">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service
android:name=".MyService"
>
<intent-filter>
<action android:name="MyService"/>
</intent-filter>
</service>
</application>
</manifest>
Mesej ralat Logcat:
05-04 21:28:44.377 21214-21214/com.example.administrator.myhhhhh E/AndroidRuntime: PENGECUALIAN MAUT: utama
Process: com.example.administrator.myhhhhh, PID: 21214
java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=MyService }
at android.app.ContextImpl.validateServiceIntent(ContextImpl.java:1851)
at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1880)
at android.app.ContextImpl.startService(ContextImpl.java:1864)
at android.content.ContextWrapper.startService(ContextWrapper.java:516)
at com.example.administrator.myhhhhh.MainActivity.onClick(MainActivity.java:26)
at android.view.View.performClick(View.java:4918)
at android.view.View$PerformClick.run(View.java:20399)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5871)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1119)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:885)
05-04 21:28:44.434 21214-21214/com.example.administrator.myhhhhh I/Proses: Menghantar isyarat PID: 21214 SIG: 9
Intent intent=new Intent("MyService");What the hell? Ini tidak boleh dipanggil tanpa mengira versi sistem Android Terdapat dua cara untuk memulakan perkhidmatan, panggilan eksplisit dan panggilan tersirat:
1) Paparan permulaan:
Perkhidmatan panggilan melalui kelas,
2) Permulaan tersirat:
Ia adalah laluan mutlak kelas perkhidmatan (dengan bahagian nama pakej) Perlu diingat bahawa permulaan tersirat telah ditamatkan dalam versi terkini Android (5.0 dan ke atas) (disebabkan oleh isu keselamatan), dan anda perlu lakukan beberapa pemprosesan tambahan padanya (Dapatkan sifat ComponentName melalui tindakan), berikut ialah cara untuk anda, kodnya adalah seperti berikut:
Semoga berjaya~
Niat saya salah tulis