我正在创建一个服务和一个应用程序.App可以调用服务上的方法.该方法调用API并基于API,给出结果.由于该应用程序是针对Android 3.0,我得到"NetworkOnMainThreadException".
我的要求是这样一种方式,我无法从app中调用后台线程中的方法.服务方法也应该返回一个基于API调用的布尔值.
有没有办法在android蜂窝中的主线程上调用网络API调用?
api android thread-safety background-process android-3.0-honeycomb
在DatabaseUtils.concatenateWhere(...)的文档中,声明它受API级别11+(HONEYCOMB)的支持.然而,在测试各种设备上的兼容性时,在我的Droid X上运行Cyanogenmod 7每晚构建98(基于姜饼2.3.5),方法调用不仅不会导致崩溃,而且按预期工作.
这与我的自定义ROM有些不一致,或者其他人是否可以在运行Gingerbread或更低版本的其他设备上重现此功能?这可能是SDK文档中的错误吗?
我们在android 3.0中有这个默认功能,当我们长时间按某个地方(例如在webview中)时,动作模式会启动,因此动作栏会随着许多默认功能(如复制,查找等)而改变.
现在我想要的是我想要开始这个动作模式,但不是长按web视图.我希望在加载webview时我希望这个动作模式自动启动而不需要长按.可能吗 ?有什么方法可以实现这个目标吗?
当使用现代版本的 Android(Honeycomb 或更高版本)时,如果硬件合适,则支持显示鼠标指针。例如,在 ASUS Transformer 或 Toshiba AC100 笔记本电脑上。
是否有任何 API 允许在这些设备之一上运行的应用程序以编程方式更改其鼠标指针?(或者在应用程序窗口中完全隐藏指针。)
我目前正在进入Android 3.0预览版的片段API,并构建了以下最小编码:
我有一个Activty,它将嵌入Fragment(s),目前实现如下:
public class Cockpit extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.cockpit);
}
public static class InfoFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
ViewGroup infoFragmentRoot = (ViewGroup) getActivity().findViewById(
R.id.infoFragmentRoot) ;
return inflater.inflate(R.id.infoFragment, container, false);
}
}
Run Code Online (Sandbox Code Playgroud)
}
活动的相应布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<fragment android:name="test.android.ui.cockpit.Cockpit$InfoFragment"
android:id="@+id/infoFragment"
android:layout_weight="1"
android:layout_width="10dp"
android:layout_height="match_parent" >
<LinearLayout …Run Code Online (Sandbox Code Playgroud) 嗨,我想你得到屏幕的屏幕尺寸减去底部的菜单栏.
我知道我可以根据设备的分辨率减去一个常数,但这是一个超级难看的黑客.我相信谷歌人不会傻到忘记给用户一个功能来获取底部菜单栏的高度,这样我就可以从全屏尺寸中减去它
这是一篇类似的帖子. android通知栏和标题栏的大小?
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
what_i_need =metrics.heightPixels-buttomMenuHeight();
Run Code Online (Sandbox Code Playgroud)
我需要buttomMenuHeight();
我在API中找不到它.在这一点上,我并不真正关心落后的可比性
谢谢
我正在为Galaxy Tab 2移植一个为Galaxy Tab 2制作的项目,但是apk运行缓慢所以我在新应用程序的AndroidManifest.XML上添加了hardwareAccelerated标志.
但运行给我以下错误:
java.lang.UnsupportedOperationException
at android.view.GLES20Canvas.clipPath(GLES20Canvas.java:287)
at br.com.iba.view.PageCurlView.drawCurl(PageCurlView.java:284)
at br.com.iba.view.PageCurlView.onDraw(PageCurlView.java:353)
at android.view.View.draw(View.java:9291)
Run Code Online (Sandbox Code Playgroud) 在Honeycomb之后,Google表示位图是由堆管理的(这里谈到),所以如果不再可以访问位图,我们可以假设GC处理它并释放它.
我想创建一个演示,显示为listView讲座(从这里)显示的想法的效率,所以我做了一个小应用程序.该应用程序允许用户按下按钮,然后列表视图一直滚动到底部,而它有10000个项目,其内容是android.R.drawable项目(名称和图像).
出于某种原因,即使我没有保存任何图像,我也会内存不足,所以我的问题是:它怎么可能?我错过了什么?
我已经在Galaxy S III上测试了应用程序,但是如果我使用适配器的原生版本,我会不断出现内存异常.我不明白为什么会这样,因为我不存储任何东西.
这是代码:
public class MainActivity extends Activity
{
private static final int LISTVIEW_ITEMS =10000;
long _startTime;
boolean _isMeasuring =false;
@Override
public void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ListView listView=(ListView)findViewById(R.id.listView);
final Field[] fields=android.R.drawable.class.getFields();
final LayoutInflater inflater=(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// listen to scroll events , so that we publish the time only when scrolled to the bottom:
listView.setOnScrollListener(new OnScrollListener()
{
@Override
public void onScrollStateChanged(final AbsListView view,final int scrollState)
{
if(!_isMeasuring||view.getLastVisiblePosition()!=view.getCount()-1||scrollState!=OnScrollListener.SCROLL_STATE_IDLE)
return;
final long …Run Code Online (Sandbox Code Playgroud) android garbage-collection out-of-memory android-3.0-honeycomb android-4.0-ice-cream-sandwich
我差不多完成了我正在制作的玩具应用游戏.
问题: 我的通知总是显示我的计数器是30000.为什么不是时间减少?
我做了什么: 我已经实现了一个简单的Service类和一个自定义计时器来记下来.最终,一旦我确定计时器正在运行,我将退出整个游戏.
这是我的代码:
package com.example.redshirtmarblez;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.CountDownTimer;
import android.os.IBinder;
import android.widget.Toast;
public class TimingService extends Service{
public long counter = 30000;
private Context ctx;
private Activity localActivity;
private NotificationManager nm;
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate()
{
super.onCreate();
nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
declareNotification();
timer.start();
//Toast.makeText(this, "Timer is :" + counter, Toast.LENGTH_LONG).show();
//showNotification(); …Run Code Online (Sandbox Code Playgroud) android android-intent android-service android-notifications android-3.0-honeycomb
我有一个手动绘制的自定义视图.我正在将内容绘制到位图中,然后在onDraw()中使用该位图.我意识到,如果我启用绘图缓存,我可以使用该缓存而不是创建自己的位图.这主要是有效的.
目前我的onDraw方法如下所示:
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(getDrawingCache(), 0, 0, null);
}
Run Code Online (Sandbox Code Playgroud)
这适用于我尝试过的模拟器.但是我在StackOverflowError上收到崩溃报告.报告看起来像这样:
java.lang.StackOverflowError
at android.view.View.getDrawingCache(View.java:10481)
at android.view.View.getDrawingCache(View.java:10446)
at com.aragaer.jtt.JTTClockView.onDraw(JTTClockView.java:162)
at android.view.View.draw(View.java:10983)
at android.view.View.buildDrawingCache(View.java:10700)
at android.view.View.getDrawingCache(View.java:10481)
at android.view.View.getDrawingCache(View.java:10446)
and so on...
Run Code Online (Sandbox Code Playgroud)
我看过android源码,实际上是buildDrawingCache调用draw().这可以解释循环.但是buildDrawingCache()应该在第二次调用时立即返回.
除非设置了PFLAG_DRAWING_CACHE_VALID(源),否则不会发生这种情况.并且仅当视图附加到父级时才设置该标志,IS硬件加速AND层类型为LAYER_TYPE_NONE(再次来源).
问题是 - 是否可以将图层类型显式设置为not-none或者我应该使用其他方法?如果是,我应该选择哪种类型?