我认为很多时候会问这个问题,stackoverflow
但仍然有很多人在努力解决这个问题.
在我的Android应用程序中,我必须每半小时唤醒设备以获取当前位置并将其发送到服务器.为此,我使用AlarmManager
了setExactAndAllowWhileIdle()
方法和WakefulBroadcastReceiver
.它几乎适用于所有标准/流行设备,如三星,LG(Nexus),索尼,松下,联想,摩托罗拉,微型等等....但其他一些设备主要是中国设备不支持或不允许设备唤醒从打瞌睡模式开始setExactAndAllowWhileIdle()
.我已在leeco letV (Android OS 6.1)
设备中对其进行了测试,不允许报警管理器在特定时间间隔内唤醒.
我在下面提到的代码部分:
UserTrackingReceiverIntentService.java
public class UserTrackingReceiverIntentService extends IntentService {
public static final String TAG = "UserTrackingReceiverIntentService";
Context context;
public UserTrackingReceiverIntentService() {
super("UserTrackingReceiverIntentService");
}
@TargetApi(Build.VERSION_CODES.M)
@Override
protected void onHandleIntent(Intent intent) {
this.context = this;
if (!Util.isMyServiceRunning(LocationService.class, context)) {
context.startService(new Intent(context, LocationService.class));
}
Calendar calendar = Calendar.getInstance();
//********************************** SETTING NEXT ALARM *********************************************
Intent intentWakeFullBroacastReceiver = new Intent(context, SimpleWakefulReceiver.class);
PendingIntent sender = PendingIntent.getBroadcast(context, 1001, intentWakeFullBroacastReceiver, 0); …
Run Code Online (Sandbox Code Playgroud) 我有一个WakefulBroadcastReceiver
带IntentService
,叫和做一些东西,每半小时报警.我已经用setExactAndAllowWhileIdle()
方法处理了打盹模式.
一些新的定制操作系统的智能手机最近在市场上推出,他们有自己的基于android操作系统的定制操作系统 像oppo与颜色os,vivo与funtouch os,xiomi与MIUI os.在操作系统中,有一个清除内存的功能.他们有一个触摸清除内存选项.例如,如果用户清除最近的应用程序列表或从最近的应用程序列表应用程序删除应用程序的所有后台服务以及所有警报将被终止.
如何使用这些新操作系统?
我Service
以30分钟的间隔调用背景来读取当前位置的纬度/经度并通过POST API将其发送到服务器.
我每隔30分钟使用课程setRepeating()
方法AlarmManager
来安排闹钟.但有时警报会被遗漏而且服务没有被调用.为了监控是否每隔30分钟调用一次警报,我在SD卡中生成了Log.txt文件.对于每次报警当前时间的报警都将写入Log.txt文件中.但是在比较4到5个设备的Log.txt文件后,我注意到对于某些设备,报警不是调用onCreate()
方法UserTrackingReceiver.java
(后台服务).下面提到的完整代码块.
当app start registerUserTrackingReceiver()
方法被调用时,如下所示:
public static void registerUserTrackingReceiver(Context context) {
try {
Intent intent = new Intent(context, UserTrackingReceiver.class);
boolean alarmUp = (PendingIntent.getService(context, 1001, intent, PendingIntent.FLAG_NO_CREATE) == null);
if (alarmUp) {
Calendar calendar = Calendar.getInstance();
if (calendar.get(Calendar.MINUTE) > 0 && calendar.get(Calendar.MINUTE) <= 30) {
calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY));
calendar.set(Calendar.MINUTE, 30);
calendar.set(Calendar.SECOND, 0);
} else if (calendar.get(Calendar.MINUTE) > 30) {
if (calendar.get(Calendar.HOUR_OF_DAY) == 23) {
calendar.set(Calendar.HOUR_OF_DAY, 0);
} else {
calendar.set(Calendar.HOUR_OF_DAY, …
Run Code Online (Sandbox Code Playgroud) 我有一个BroadcastReceiver
班来接听来电.我想将传入的数字与我的数据库中的数字进行比较.现在我无法理解如何在BroadcastReceiver
课堂上使用数据库.我用这种方法DBAdapter
在onReceive()
方法中创建类的对象:
@Override
public void onReceive(Context context, Intent intent) {
DBAdapter db = new DBAdapter(contenxt);
Cursor c = d.getAllData();
while(c.moveToFirst){
do{
Log.v("Data : "+c.getString(2));
}
while(c.moveToNext);
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码片段抛出NullPointerException.请有人帮助我实现这一目标.
我有一个如下所示的 PageView 小部件:
Widget buildPageView() {
return PageView(
controller: pageController,
onPageChanged: (index) {
pageChanged(index);
},
children: <Widget>[
AddPropertyDescription(pageController: pageController,),
AddPropertyMedia(pageController: pageController),
AddPropertyLocation(pageController: pageController),
AddPropertyDetails(pageController: pageController),
AddPropertyAmenities(pageController: pageController)
],
);
}
Run Code Online (Sandbox Code Playgroud)
我的 PageView 中有五个页面作为小部件,现在我想在页面更改时将数据从一个页面传递到另一个页面,直到最后一页......
我Next
在每个页面中都选择了按钮,在下一个按钮 onTap() 中,我只需增加页码即可滑动到下一页,如下所示
onTap: () async{
pageController.animateToPage(
1,
duration: Duration(milliseconds: 300),
curve: Curves.linear,
);
},
Run Code Online (Sandbox Code Playgroud)
当按下下一步按钮并进入下一个屏幕时,我想携带数据并将其传递到下一页。
这里有没有人在颤振中遇到过同样的问题.....
请指导我如何实现这一目标......