gpt4 book ai didi

android - 为什么我的服务使用大量电池?

转载 作者:行者123 更新时间:2023-11-29 17:48:18 25 4
gpt4 key购买 nike

这是我的服务:

public class reminder extends Service{

WakeLock wakeLock;
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public void onCreate() {

super.onCreate();
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
wakeLock.acquire();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {



Timer t=new Timer();
final NotificationManager mgr=(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
//check array alarm
final SharedPreferences settings = getSharedPreferences("arrayalarm", 0);
final String sport = settings.getString("sport", "");
final String[] sports=sport.split("#");
TimerTask tt=new TimerTask() {
@Override
public void run() {

if(!(sports[0].equals("")))
for(int i=0;i<sports.length;i++)
{
String[] informatins=sports[i].split(":");
if(new Date().getHours()==Integer.parseInt(informatins[0])&&new Date().getMinutes()==Integer.parseInt(informatins[1]))
{
Notification not=new Notification(R.drawable.sport,"ورزش",new Date().getTime());
PendingIntent pn=PendingIntent.getActivity(getApplicationContext(),0,new Intent(getApplicationContext(),MainActivity.class), 0);
not.setLatestEventInfo(getApplicationContext(), "ورزش", "تو الان باید ورزش کنی", pn);
not.flags=Notification.FLAG_AUTO_CANCEL;
not.vibrate=new long[] {1000l,200l,200l,500l};
not.sound=Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.downloaddlazerdompleted);
mgr.notify(1304,not);
}
}

}
};
t.scheduleAtFixedRate(tt, 0, 60000);
return START_STICKY;
}

@Override
public void onDestroy() {
wakeLock.release();
//Toast.makeText(getApplicationContext(), "god bye main human",Toast.LENGTH_SHORT).show();
super.onDestroy();
}}

我的服务是运动提醒,当特殊时间到来时我的服务会发送通知。
这很好用,但会消耗大量电池。在设置>设备中的电池中,我的应用程序在列表中排在第一位。
我怎样才能解决这个问题?我还想在发送通知时打开屏幕。我该怎么做?

最佳答案

好吧,如果我要编写一个尽可能快地耗尽电池的应用程序,我认为它看起来很像这样。

  • 你持有唤醒锁。这意味着设备无法断电。 ...所以它完全没有理由地使用电池
  • 您每分钟都在运行振动器。许多手机上的振动器是一个小型电动机。运行它非常昂贵。

查看AlarmManager。您可以以更低的成本做类似的事情。

...包括,顺便说一下,打开屏幕。为此,请勿使用通知。而是将 Intent 发送到您的 MainActivity。

关于android - 为什么我的服务使用大量电池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24852240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com