Whatsapp服务如何继续在华为手机中运行?
我删除了受保护应用的whatsapp但Whatsapp服务未在屏幕中关闭 关闭时间。
我正在编写需要每次都运行的关键应用程序,但我的服务在屏幕关闭时被杀死。
我想写Whatsapp或AirDroid服务等服务 谁能解释一下?
我的意思是如何在华为手机中编写特别不关闭屏幕的服务
这是我的服务代码
AppLifeService
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();
}
}
答案 0 :(得分:5)
在后退START_STICKY
中使用onStartCommand()
的服务将自动重新启动,您无需在onDestroy()
@Override
public void onDestroy() {
// startService(new Intent(this, AppLifeService.class));
super.onDestroy();
}
答案 1 :(得分:3)
您需要在关闭时自动创建Service
以“重新开启”BroadcastService
。
例如:
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"/>
答案 2 :(得分:3)
@Sohail Zahid 在停止时,答案会告诉您
repeatedly
一次又一次地启动服务 。但是为了让服务保持活力,就像在后台播放歌曲一样。
我找到的最佳方法是
startForeground(int, Notification)
其中int值对于每个通知都必须是唯一的
您需要为正在执行部分的通知栏中显示的方法提供Notification
。 通过这种方式,应用程序可以在后台保持活动状态而不会出现任何中断。