Rumah > Java > javaTutorial > Mengapa Perkhidmatan Android Saya Tidak Autostart semasa But?

Mengapa Perkhidmatan Android Saya Tidak Autostart semasa But?

DDD
Lepaskan: 2024-12-02 20:33:16
asal
865 orang telah melayarinya

Why Doesn't My Android Service Autostart on Boot?

Android Service Autostart on Boot

Masalah:

Walaupun menyediakan IntentService untuk bermula secara automatik pada permulaan sistem, perkhidmatan gagal dimulakan seperti yang diharapkan. Penyelesaian masalah tidak menghasilkan sebarang mesej ralat atau petunjuk tentang punca isu itu.

Jawapan:

Untuk memulakan perkhidmatan semasa but OS Android, pendekatan komprehensif ialah diperlukan. Berikut ialah penyelesaian langkah demi langkah:

AndroidManifest.xml:

Pastikan fail manifes mengandungi perkara berikut:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.example.app"
  android:versionCode="1"
  android:versionName="1.0"
  android:installLocation="internalOnly">

  <uses-sdk android:minSdkVersion="8" />
  <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
  <uses-permission android:name="android.permission.YOUR_CUSTOM_PERMISSION" />

  <application android:icon="@drawable/icon" android:label="@string/app_name">
    <service android:enabled="true" android:name=".MyService" />
    <receiver android:name=".BootBroadcastReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>
  </application>
</manifest>
Salin selepas log masuk

BootBroadcastReceiver.java:

Buat siaran penerima untuk mendengar acara but sistem dan mulakan perkhidmatan:

public class BootBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
            Intent serviceIntent = new Intent(context, MyService.class);
            context.startService(serviceIntent);
        }
    }
}
Salin selepas log masuk

MyService.java:

Laksanakan kelas perkhidmatan:

public class MyService extends Service {
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // Perform service tasks here
        return START_NOT_STICKY;
    }

    @Override
    public void onDestroy() {
        // Clean up resources here
    }
}
Salin selepas log masuk

Nota Tambahan:

  • Minta apa-apa yang perlu kebenaran dalam manifes.
  • Pastikan perkhidmatan diisytiharkan dengan android:enabled="true".
  • Semak sama ada perkhidmatan sudah berjalan sebelum memulakan tika baharu.
  • Log maklumat yang berkaitan untuk tujuan penyelesaian masalah.

Atas ialah kandungan terperinci Mengapa Perkhidmatan Android Saya Tidak Autostart semasa But?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan