3

Whatsapp 服务如何在华为手机中保持后台运行?

我删除了受保护应用程序的 whatsapp,但 Whatsapp 服务未在屏幕关闭时间关闭。

我正在编写每次都需要运行的关键应用程序,但我的服务在屏幕关闭时被终止。

我想编写像 Whatsapp 或 AirDroid 服务这样的服务,任何人都可以解释一下吗?

我的意思是如何在华为手机中编写特别不关闭屏幕的服务

这是我的服务代码

应用生活服务

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

START_STICKY重新运行的服务onStartCommand()将自动重新启动,您无需重新启动它onDestroy()

    @Override
    public void onDestroy() {

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

    }
于 2016-07-20T07:02:23.220 回答
4

@Sohail Zahid Answer 告诉您一种在停止时一次又一次repeatedly地启动服务的方法。但是为了让服务保持活力,就像在后台播放歌曲一样。

我发现的最好的方法是

startForeground(int, Notification)

其中 int 值对于每个通知必须是唯一的

您需要Notification为显示在“正在进行”部分的通知栏中的方法提供一个。这样,应用程序将在后台保持活动状态而不会受到任何干扰。

于 2016-08-09T12:26:00.477 回答