我对wakelock有疑问.在下面显示的情况下,Android操作系统是否释放唤醒锁(PARTIAL_WAKE_LOCK如果您需要指定)以防止获取唤醒锁并且在关闭电源(不睡眠)之前浪费电池.
案例1-a:
App已经在其中一个线程中获得了wakelock(没有超时选项)(在这种情况下请认为这是合理的)并且它被设计为在关键任务完成时释放唤醒锁.应用程序可以被taskmanager或臭名昭着的taskkiller杀死,应用程序没有机会让它的线程释放唤醒锁.那个唤醒锁会发生什么?
案例1-b :(
如果对案例1-a的回答是"是的,请不要担心",那么请忽略这种情况.)与案例1-a相同但应用程序给予唤醒锁的超时选项,比如3秒.此超时选项是否保持有效?
案例2-a:
请想象一下,有一项服务由AlarmManager启动(通过广播接收器),并且该服务已获得唤醒锁(没有超时选项).此服务旨在使唤醒锁获取时间最小化.但不幸的是,由于内存紧缩,Android操作系统选择了这项服务.(我不知道当获得唤醒锁时操作系统是否不会终止服务,但我猜操作系统并不关心.但我希望操作系统稍后会发布唤醒锁.)那个唤醒锁会发生什么?
案例2-b :(
如果对案例2-a的回答是"是的,请不要担心",那么请忽略这种情况.)与案例2-a相同但是服务给了唤醒锁的超时选项,比如3秒.此超时选项是否保持有效?
android kill-process android-source android-wake-lock wakelock
我的应用程序的一个用户报告说应用程序告诉网络位置已关闭,即使他确实打开了它.他给我发了几张屏幕截图,他们让我思考;
LocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)
Run Code Online (Sandbox Code Playgroud)
工作不正常.他的手机运行的是Android 4.1.2,首先我认为这是导致这个问题的原因.但事实并非如此.他也给我发了一个屏幕截图.
然后我用Google搜索并找到了这个.这个问题似乎对我有所帮助,但不幸的是,回答对这个案子没有帮助,提问者没有进一步追求.
我的应用程序与位置有关,并且一直使用LocationManager.isProviderEnabled来了解GPS和网络的位置是打开还是关闭.我从未被告知我的应用程序直到最近才正确地知道这些设置.他是第一个报告此问题的用户.我了解到还有另一种方法可以通过查看Secure.LOCATION_PROVIDERS_ALLOWED了解GPS和网络的位置设置.为了看看这个方法如何在他的手机上工作,我写了一个简单的应用程序并让他跑.这个应用程序做简单的任务,并在屏幕上显示文本
LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER))
{
string = "GPS=on\n";
}
else
{
string = "GPS=off\n";
}
if(locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER))
{
string += "Network=on\n";
}
else
{
string += "Network=off\n";
}
String status = android.provider.Settings.Secure.getString(getContentResolver(), Secure.LOCATION_PROVIDERS_ALLOWED);
if(status.contains("gps"))
{
string += "GPS=on\n";
}
else
{
string += "GPS=off\n";
}
if(status.contains("network"))
{
string += "Network=on\n";
}
else
{
string += "Network=off\n";
}
Run Code Online (Sandbox Code Playgroud)
他再次发回屏幕截图.它看起来;
GPS=on
Network=off
GPS=on
Network=on
Run Code Online (Sandbox Code Playgroud)
这个结果并没有让我开心.这可能有一些可能性.
现在我的问题是;
我刚开始在Android上学习google-api-java-client.将下3个库添加到项目中.(我不使用Maven.)
并选择了可供使用的示例代码.在示例中,它使用了GoogleTransport,现在似乎无法使用.
HttpTransport transport = GoogleTransport.create();
Run Code Online (Sandbox Code Playgroud)
所以我把它改成了在网上找到的NetHttpTransport().
import com.google.api.client.http.javanet.NetHttpTransport;
...
HttpTransport transport = new NetHttpTransport();
Run Code Online (Sandbox Code Playgroud)
但是,我得到了例外.
05-24 15:54:33.310: ERROR/AndroidRuntime(4586): java.lang.NoClassDefFoundError: com.google.common.base.Preconditions
05-24 15:54:33.310: ERROR/AndroidRuntime(4586): at com.google.api.client.util.ClassInfo.<init>(ClassInfo.java:324)
05-24 15:54:33.310: ERROR/AndroidRuntime(4586): at com.google.api.client.util.ClassInfo.of(ClassInfo.java:77)
05-24 15:54:33.310: ERROR/AndroidRuntime(4586): at com.google.api.client.util.GenericData.<init>(GenericData.java:44)
05-24 15:54:33.310: ERROR/AndroidRuntime(4586): at com.google.api.client.http.HttpHeaders.<init>(HttpHeaders.java:37)
05-24 15:54:33.310: ERROR/AndroidRuntime(4586): at com.google.api.client.http.HttpTransport.<init>(HttpTransport.java:82)
05-24 15:54:33.310: ERROR/AndroidRuntime(4586): at com.google.api.client.http.javanet.NetHttpTransport.<init>(NetHttpTransport.java:35)
05-24 15:54:33.310: ERROR/AndroidRuntime(4586): at net.DailyTimer.test.MainActivity.onCreate(MainActivity.java:290)
Run Code Online (Sandbox Code Playgroud)
这有什么问题?
ACRA的粉碎报告给我发了这个错误.
java.lang.SecurityException: Not allowed to start service Intent { act=auto_update cmp=net.DailyTimer.CalendarAlarmHelperFree/net.DailyTimer.CalendarAlarmHelper.CalendarAlarmService } without permission Service process is bad
Run Code Online (Sandbox Code Playgroud)
我在有限的设备上看到这个错误,我无法重现.我猜这个错误取决于运行环境.
我的问题是:
编辑:
我在调用startService(intent)启动远程服务时遇到此错误.在许多设备上它工作正常.
我一直在使用Primefaces很难,所以SO是我找到问题答案的最佳位置.
我有p:dataTable很多列,所以每个列都应该有很短的宽度.对于标题,它们似乎没问题,但对于数据列,它们会分为2行或更多行,这是我不喜欢的.
我将第一列的宽度设置得更大,以显示数据表中的内容.标题文本很好,保持单行.但数据列对我不利.我更喜欢他们保持单线.我不希望换行.椭圆是优选的,但不是强制性的.
<p:dataTable id="searchResultTable" var="searchData" value="#{registerBean.searchDataList}"
scrollHeight="200"
rowIndexVar="rowIndex"
rowKey="#{searchData.model}"
selectionMode="single"
selection="#{registerBean.selectedSearchData}"
paginator="true" rows="10"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,20" resizableColumns="true">
<p:ajax event="rowSelect" listener="#{registerBean.onSelectedSearchData}"/>
<p:column headerText="#{registerBean.getSearchResultHeaderText(0)}"
width="30" style="height: 10px; font-size: 8pt;">
<h:outputText value="#{registerBean.getSearchResultText(rowIndex,0)}" />
</p:column>
<p:column headerText="#{registerBean.getSearchResultHeaderText(1)}"
width="30" style="10px; height: 10px; font-size: 8pt;">
<h:outputText value="#{registerBean.getSearchResultText(rowIndex,1)}" />
</p:column>
<p:column headerText="#{registerBean.getSearchResultHeaderText(2)}"
width="30" style="10px; height: 10px; font-size: 8pt;">
<h:outputText value="#{registerBean.getSearchResultText(rowIndex,2)}" />
</p:column>
Run Code Online (Sandbox Code Playgroud)
我用于h:outputText每一列.我不坚持h:outputText,我可以使用Primefaces的任何组件都可以.
提前致谢.
我有偏好屏幕扩展PreferenceActivity.对于目标OS 4.0.3,我想<在操作栏上添加图标,所以我这样做了onCreate().
ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)
有效.<已添加到应用程序图标的左侧.但是当我点击进入下一级别的项目(更多细节屏幕)时,<将不会显示.回到顶层,<再次出现.
我从未想过嵌套偏好的机制,因为聪明的PreferenceActivity隐藏它.现在我的问题是,为什么不PreferenceActivity显示<嵌套首选项?
我不想争辩说我不需要添加<到首选项屏幕.(即使谷歌的一些应用程序添加,有些也没有,所以我认为没有可靠的规则.)
如果有一个简单的解决方案,我想解决这个问题.
android preferenceactivity android-4.0-ice-cream-sandwich android-actionbar android-homebutton
我听说操作系统4.3具有隐藏功能,可以禁用某些权限,无需重新打包APK.当我们发布应用时,我们添加必要的权限并使应用工作.但该功能可以禁用权限.我知道一些应用程序已经这样做虽然它是一个黑客,我不需要关心.但是使用OS 4.3,用户可以轻松地做到这一点.
现在我的问题是,当禁用权限时,相应的API会抛出异常吗?(我想是的.)如果这是真的,我应该为一些操作添加try-catch,否则新手用户可能最终认为我的应用程序设计不佳.
或者,我将添加一些代码来检查权限是否有我的应用程序工作,如果不是我会显示一些粗鲁,没有礼貌的消息告诉不要这样做并退出应用程序.
(有人可能会关闭这个问题,说这不是一个真正的问题.)
我正在尝试将我的应用程序从eclipse迁移到Android Studio.我没有使用导入功能,基于非常简单的创建项目.我设法成功构建项目但是当我尝试运行我的应用程序时出现了下一个错误.
AGPBI: {"kind":"simple","text":"Uncaught translation error: com.android.dex.util.ExceptionWithContext","sources":[{}]}
AGPBI: {"kind":"simple","text":"1 error; aborting","sources":[{}]}
Run Code Online (Sandbox Code Playgroud)
我在Google搜索中看到了类似的错误,但我找不到解决此问题的方法.
我的build.gradle看起来像这样.(我删除了签名配置.)
apply plugin: 'com.android.application'
android {
compileSdkVersion 'Google Inc.:Google APIs:21'
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "net.dailytimer.imadoco"
minSdkVersion 9
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
proguardFile 'C:/Android/AndroidStudioProjects/imadoco/document/proguard-project.txt'
signingConfig signingConfigs.config
}
}
productFlavors {
free {
versionCode 30800
versionName '3.08.0'
applicationId 'net.DailyTimer.imadocoFree'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile files('libs/acra-4.6.1.jar')
compile 'com.google.android.gms:play-services:8.3.0'
compile 'com.android.support:support-v4:23.1.0'
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用--stacktrace和--debug选项来获取更多日志,但没有帮助.
19:32:19.775 [DEBUG] …Run Code Online (Sandbox Code Playgroud) android ×7
permissions ×2
android-4.0-ice-cream-sandwich ×1
google-api ×1
kill-process ×1
primefaces ×1
service ×1
wakelock ×1