Tag: android

如何在应用程序启动器图标中显示通知的数量

三星Galaxy Note 2 Android版本4.1.2 我知道这个问题以前曾经问过,答复是不可能的 如何在android上的应用程序启动器图标上显示气球计数器 然而,昨天我更新了Facebook应用程序,它开始显示一个未读消息私人消息的计数器。 为什么Facebook应用程序可以和我不能这样做我的应用程序? 三星Galaxy Note 2 Android版本4.1.2

如何找到Android设备的序列号?

我需要为Android应用程序使用唯一的ID,我认为该设备的序列号将是一个很好的候选人。 如何在我的应用程序中检索Android设备的序列号?

如何从Android中的PreferenceActivity获取SharedPreferences?

我正在使用PreferenceActivity来显示我的应用程序的一些设置。 我通过xml文件膨胀设置,以便我的onCreate(和完整的类方法)如下所示: public class FooActivity extends PreferenceActivity { @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); addPreferencesFromResource(R.xml.preference); } } PreferenceActivity PreferenceFragment的javadoc声明 这些首选项将在用户与之交互时自动保存到SharedPreferences中。 要检索此活动中首选项层次将使用的SharedPreferences实例,请使用与此活动相同的包中的上下文调用getDefaultSharedPreferences(android.content.Context)。 但是如何在另一个活动中获得SharedPreference的名称? 我只能打电话 getSharedPreferences(name, mode) 在其他的活动,但我需要的是PreferenceActivity使用的SharedPreference的名称。 什么是名字?我怎样才能找回它?

getApplication()与getApplicationContext()

我无法找到一个令人满意的答案,所以在这里我们去: Activity/Service.getApplication()和Context.getApplicationContext()什么? 在我们的应用程序中,都返回相同的对象。 然而,在ActivityTestCase中,模拟应用程序将使getApplication()返回模拟,但getApplicationContext仍将返回不同的上下文实例(由Android注入)。 这是一个错误? 这是故意的吗? 我甚至不了解其中的差别。 在测试套件之外,是否有两个调用可能返回不同的对象? 何时,为什么? 而且,为什么getApplication在Activity和Service上定义,而不是在Context ? 不应该总是有从任何地方有效的应用程序实例吗?

Android:我想动摇它

我需要添加一个摇动功能,将刷新我的Android应用程序。 我找到的所有文档都涉及到实现SensorListener,但是Eclipse告诉我已经废弃了,建议使用SensorEventListener。 任何人有一个很好的指导,我怎么去创造这个摇控制器 ?

AsyncTask是真的在概念上有缺陷还是我错过了什么?

我已经调查了几个月的这个问题,提出了不同的解决方案,我不满意,因为他们都是大规模的黑客。 我还是不敢相信一个有设计上的缺陷的人把它变成了框架,没有人在谈论这个框架,所以我想我一定是错过了一些东西。 问题是与AsyncTask 。 根据它的文件 “允许执行后台操作并在UI线程上发布结果,而无需操作线程和/或处理程序。 这个例子继续展示了如何在onPostExecute()调用一些示例showDialog()方法。 然而,这似乎完全是我设计的 ,因为显示一个对话框总是需要对一个有效的Context的引用,并且一个AsyncTask 不能持有对上下文对象的强引用 。 原因是显而易见的:如果活动被破坏触发任务呢? 这可能会一直发生,例如因为您翻转了屏幕。 如果这个任务持有对创建它的上下文的引用,那么你不仅要坚持一个无用的上下文对象(这个窗口已经被销毁了, 任何 UI交互都将失败,并且有异常!),你甚至有可能冒险创建一个内存泄漏。 除非我的逻辑在这里是有缺陷的,这意味着: onPostExecute()是完全没有用的,因为如果你不能访问任何上下文,在UI线程上运行这个方法有什么好处呢? 这里你不能做任何有意义的事情。 一种解决方法是不传递上下文实例到AsyncTask,而是一个Handler实例。 这是有效的:由于处理程序松散地绑定上下文和任务,您可以在它们之间交换消息,而不会冒险泄漏(对吧?)。 但是这意味着AsyncTask的前提,即你不需要打扰处理程序,是错误的。 它也似乎滥用处理程序,因为你是发送和接收消息在同一个线程(你创建它的UI线程,并通过它发送onPostExecute()这也是在UI线程上执行)。 为了解决这个问题,即使采用了这种解决方法,仍然存在这样的问题,即当上下文被破坏时,您不会记录它所触发的任务。 这意味着在重新创建上下文时,例如在屏幕方向更改之后,您必须重新启动任何任务。 这是缓慢和浪费。 我的解决方案( 在Droid-Fu库中实现 )是维护WeakReference从组件名称到当前实例在唯一应用程序对象上的映射。 每当一个AsyncTask被启动时,它就会在该映射中记录调用上下文,并且在每个回调函数中,都会从该映射中获取当前上下文实例。 这可以确保您永远不会引用陈旧的上下文实例, 并且您始终可以访问回调中的有效上下文,以便您可以在那里进行有意义的UI工作。 它也不会泄漏,因为引用很弱,并且在给定组件的实例不再存在时被清除。 尽管如此,这是一个复杂的解决方法,并且需要对Droid-Fu库类进行子类化,这使得它成为一种相当干扰的方法。 现在我只想知道:我只是大量地缺少一些东西或是AsyncTask真的完全有缺陷? 你的经验如何与它合作? 你是怎么解决这些问题的? 感谢您的输入。

如何在RecyclerView中的项目之间添加分隔符和空格?

这是一个如何在ListView类中使用divider和dividerHeight参数完成的例子 : <ListView android:id="@+id/activity_home_list_view" android:layout_width="match_parent" android:layout_height="match_parent" android:divider="@android:color/transparent" android:dividerHeight="8dp"/> 但是,在RecyclerView类中我没有看到这种可能性。 <android.support.v7.widget.RecyclerView android:id="@+id/activity_home_recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="vertical"/> 在这种情况下,定义边距和/或直接将自定义分隔视图添加到列表项的布局是否可行,还是有更好的方法来实现我的目标?

在Listview中使用复选框获取选定的项目

我正在创建一个Android应用程序,我有一个列表视图,显示我的手机中安装的所有应用程序 我的Listview是自定义的,它包含了一个Icon,Textview和Checkbox,使用这个图标是为了显示应用程序的图标,Textview是显示应用程序的名称,使用复选框是确定什么Item我选择的Listview, 我怎样才能确定什么是我在我的应用程序中点击按钮时在列表视图行中选择的复选框? 我是Android新手,所以我不知道我应该怎么做 这里是我的代码 public class AppInfo { public Drawable icon; public String applicationName; public AppInfo(){ super(); } public AppInfo(Drawable icon, String applicationName){ super(); this.icon = icon; this.applicationName = applicationName; } } import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; import android.app.Activity; import android.widget.CheckBox; public class AppInfoAdapter extends […]

OutOfMemoryError:位图大小超过虚拟机预算: – Android

可能重复: Android:加载图像到Bitmap对象时出现内存不足的问题 我从Url下载图像并显示它们。 在下载的时候,它给出out of memory error : bitmap size exceeds VM budget 。 我正在使用drawable。 代码如下: HttpClient httpclient= new DefaultHttpClient(); HttpResponse response=(HttpResponse)httpclient.execute(httpRequest); HttpEntity entity= response.getEntity(); BufferedHttpEntity bufHttpEntity=new BufferedHttpEntity(entity); InputStream instream = bufHttpEntity.getContent(); Bitmap bm = BitmapFactory.decodeStream(instream); Bitmap useThisBitmap = Bitmap.createScaledBitmap(bm,bm.getWidth(),bm.getHeight(), true); bm.recycle(); BitmapDrawable bt= new BitmapDrawable(useThisBitmap); System.gc(); 这是错误: 05-28 14:55:47.251: ERROR/AndroidRuntime(4188): java.lang.OutOfMemoryError: bitmap size exceeds […]

.apk首次安装时如何启动服务

在我的应用程序中,我没有任何UI部分,所以我需要在应用程序安装到设备上后立即启动服务。 我看到很多的答案是不可能的,但我想这肯定是可能的。 只要看看Android Market上满足我的要求的PlanB应用程序。 下面是我的清单文件,我如何尝试,但服务没有被调用。 所以,让我知道什么是应用程序安装时启动服务的最佳方式。 UPDATE 我也尝试使用android.intent.action.PACKAGE_ADDED它工作正常检测其他应用程序包但不是为自己。 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.auto.start" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <application android:icon="@drawable/ic_launcher" > <service android:name=".MyService"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </service> <receiver android:name=".BootUpReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> <category android:name="android.intent.category.DEFAULT"/> <action android:name="android.intent.action.PACKAGE_INSTALL" /> <action android:name="android.intent.action.PACKAGE_ADDED" /> <data android:scheme="package"/> </intent-filter> </receiver> </application> </manifest>