3

Whatsapp サービスが huawei 電話のバックグラウンドでどのように動作し続けるのか?

保護されたアプリの whatsapp を削除しましたが、画面オフ時に Whatsapp サービスが閉じられませんでした。

毎回実行する必要がある重要なアプリを書いていますが、私のサービスは画面オフで強制終了されました。

私はWhatsappやAirDroidサービスのようなサービスを書きたいのですが、誰でもそれについて説明できますか?

HUAWEI電話で画面オフで特別に閉じないサービスの書き方を意味します

これは私のサービスコードです

AppLife サービス

public class AppLifeService extends Service {
@Override
public IBinder onBind(Intent intent) {

    return null;
}



@Override
public void onCreate() {
    super.onCreate();

}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    super.onStartCommand(intent, flags, startId);


    startForeground(5, AppLifeReciever.createNotification(this));


    return  START_STICKY;
}


@Override
public void onDestroy() {


    //startService(new Intent(this, AppLifeService.class)); Updated : not need


    super.onDestroy();

}
}
4

3 に答える 3

4

閉じたときに自動的にService「再開」するには、 を作成する必要があります。BroadcastService

例えば:

ブロードキャストサービス

public class MyBroadcastService extends BroadcastReceiver
{

 @Override
    public void onReceive(final Context context, Intent intent)
    {
     //do something
    }
}

自動で「再開」するサービス

public class MyService extends Service
{

@Override
    public void onCreate()
    {
        // Handler will get associated with the current thread,
        // which is the main thread.
        super.onCreate();
        ctx = this;

    }

 @Override
    public IBinder onBind(Intent arg0)
    {
        // TODO Auto-generated method stub

        return null;
    }

@Override
    public int onStartCommand(Intent intent, int flags, int startId)
    {
        Log.i(TAG, "onStartCommand");
        //Toast.makeText(this, "onStartCommand", Toast.LENGTH_LONG).show();

        return START_STICKY;
    }

//launch when its closed
@Override
    public void onDestroy()
    {
        super.onDestroy();
        sendBroadcast(new Intent("YouWillNeverKillMe"));
        Toast.makeText(this, "YouWillNeverKillMe TOAST!!", Toast.LENGTH_LONG).show();
    }
}

あなたについて宣言するAndroidManifest.XML

<receiver android:name=".BroadcastServicesBackground.MyBroadcastService">
            <intent-filter>
                <!--That name (YouWillNeverKillMe) you wrote on Myservice-->
                <action android:name="YouWillNeverKillMe"/>

                <data android:scheme="package"/>
            </intent-filter>
            <intent-filter>
                 <!--To launch on device boot-->
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </receiver>

        <service android:name=".Services.MyService"/>
于 2016-07-20T07:07:16.127 に答える
4

@Sohail Zahid Answer は、停止時にrepeatedlyサービスを何度も開始する方法を教えてくれます。ただし、バックグラウンドで曲を再生するなど、サービスを維持するために。

私が見つけた最良のアプローチは

startForeground(int, Notification)

int 値はすべての通知で一意である必要があります

NotificationOngoing セクションの通知バーに表示されるメソッドに を指定する必要があります。このようにして、アプリは中断することなくバックグラウンドで存続します。

于 2016-08-09T12:26:00.477 に答える
4

START_STICKYin rerunを使用したサービスはonStartCommand()自動的に再起動されます。再起動する必要はありません。onDestroy()

    @Override
    public void onDestroy() {

      //  startService(new Intent(this, AppLifeService.class));
        super.onDestroy();

    }
于 2016-07-20T07:02:23.220 に答える