小编soc*_*qwe的帖子

活动暂停时是否可以更新视图?

我可以在活动暂停时更新UI /视图(例如更改文本视图文本),例如,因为已启动另一个活动吗?

通过将活动与事件总线连接,我已经实现了一个像这样做的小测试应用程序.

活动A有一个TextView.活动A将自身注册到onCreate()中的EventBus,并在onDestroy()中取消注册.活动A启动活动B.活动B执行一些更改并触发ChangedEvent.活动A将接收此ChangedEvent,因为即使活动A暂停,它仍然会注册,并将更新活动A的TextView(更改文本).

一切正常.我已经在各种Android版本(2.3.3到4.3)上的各种nexus设备和仿真器上进行了测试.没有异常或意外行为.

那么可以肯定地说,我可以构建一个带有活动的应用程序,在活动暂停时更新他的视图吗?这取决于制造商等吗?我只能在股票Android设备上测试我的示例应用程序.

android android-activity

10
推荐指数
1
解决办法
1788
查看次数

Eclipse中的GWT编译按钮

一个简单的问题:

我正在使用Eclipse 3.7 Indigo并更新了GWT(2.4)Eclipse插件.

现在我找不到主工具栏中的GWT编译按钮.

以前在主工具栏中有这个符号 GWT编译按钮,但更新后,此按钮已消失,编译操作已作为子菜单条目移动到"Google服务和开发工具"中,在此工具栏中由此符号表示 在此输入图像描述.

有没有办法将GWT编译按钮添加到主工具栏或指定快捷方式?

点击"Google服务和开发工具"进入编译子菜单条目真是太累了:-)

eclipse gwt shortcut gwt-compiler

9
推荐指数
1
解决办法
4255
查看次数

没有OAuth的Twitter Rest API 1.1搜索

是否可以在没有OAuth的情况下使用新的Twitter Rest API进行搜索.

我只想搜索带有给定标签的推文.

例如我打电话:https: //api.twitter.com/1.1/search/tweets.json?%23MyTag

其中%23是编码的"#"

不过我总是得到

{"errors":[{"message":"Bad Authentication data","code":215}]}
Run Code Online (Sandbox Code Playgroud)

我猜它是因为我没有经过验证......

是否可以在没有OAuth的情况下运行搜索?

api twitter rest twitter-oauth

9
推荐指数
1
解决办法
2万
查看次数

如何在robolectric中使用findViewById()

我只想用robolectric进行测试,看看片段中是否有某个视图可见.我的单元测试看起来像这样:

ActivityController controller = Robolectric.buildActivity(FragmentActivity.class);
FragmentActivity activity = (FragmentActivity) controller.create().start().resume().visible().get();

F fragment = new MyFragment();
activity.getSupportFragmentManager().beginTransaction()
        .add(fragment, FRAGMENT_TAG).commit();


View view = fragment.getView().findViewById(R.id.my_view);
assertEquals(view.getVisibility(), View.VISIBLE);
Run Code Online (Sandbox Code Playgroud)

我正在使用最新的android gradle插件1.1.3,robolectirc 2.4和robolectric gradle插件1.0.1,我的单元测试在test文件夹中(不是androidTest).我无法编译该代码,因为编译器无法解析R.java.

我的build.gradle:

buildscript {
  repositories {
    jcenter()
  }

  dependencies {
    classpath 'com.android.tools.build:gradle:1.1.3'
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
    classpath 'org.robolectric:robolectric-gradle-plugin:1.0.1'
  }
}

apply plugin: 'com.android.library'
apply plugin: 'com.neenbedankt.android-apt'
apply plugin: 'org.robolectric'


android { ... }

dependencies {
  compile fileTree(dir: 'libs', include: ['*.jar'])

  // Testing
  testCompile 'org.robolectric:robolectric:2.4'
  testCompile 'junit:junit:4.12'

  // …
Run Code Online (Sandbox Code Playgroud)

android robolectric android-gradle-plugin robolectric-gradle-plugin

9
推荐指数
1
解决办法
4483
查看次数

context.getSystemService()是一个昂贵的调用吗?

context.getSystemService()一个昂贵的电话?

即我已经构建了一个小的http网络库(我知道还有其他可用的http网络库)ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);用于检查(在执行http请求之前)用户是否与互联网连接(一种快速失败策略).

我的问题是我应该保存ConnectivityManager我的http库的实例变量(类字段),还是应该ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);在每次启动http请求之前调用 以检索"新"连接管理器?每次调用时都返回相同的ConnectivityManager实例getSystemService(Context.CONNECTIVITY_SERVICE)(换句话说,可以将ConnectivityManger存储到类字段中导致问题,因为我的http库是一个很长的生存者 - >只要应用程序运行就会存在)

android android-context

9
推荐指数
1
解决办法
916
查看次数

Android:在Activity和Service之间使用的Singleton

我想知道创建一个在一些Android活动和Android服务之间使用的Singleton是不是一个坏主意.据我所知,静态字段,在我的情况下,Singleton,只要整个Process处于活动状态就可用.

我的计划是使用单例而不是Parcelable在我的活动和后台服务之间共享数据.所以我的Activity1将通过调用MySingleton.getInstance()添加一些数据.addData(foo); 然后我会发送一个Intent来告知我的服务新单元已被添加到单例中.接下来,我的BackgroundService将处理intent并调用MySingleton.getInstance().getLatestData(); 然后它会处理数据(需要一些时间).接下来,通过使用单例并激发广播意图,该服务的结果将"后"回来,这些广告意图由Activity1处理(如果是活动的),并且Activity1将从单例中检索结果.

你们认为这是个坏主意吗?

编辑:我想要实现的是一个软件的和平,从Web服务器下载数据解析它并返回结果.所以我的Activity将创建DownloadJob对象.DownloadJob-Object将被放入DownloadScheduler(Singleton),它将所有DownloadJobs排队和管理.DownloadScheduler允许同时运行5个DownloadJobs并使用队列来存储等待.有效的下载将由DownloadService(IntentService)完成,它通过Intent通知现在应该执行(下载)新的DownloadJob.DowanlodService将从DownloadSchedulers队列(PriorityBlockingQueue)中检索下一个作业,并通过设置DownloadJob.setResult(...)返回结果并触发广播意图,结果已准备好,

因此,在我的场景中,我将使用单例从DownloadService访问DownloadJobs,而不是生成DownloadJob Parcelable并将其传递给Intent.所以我会避免这个问题,我在内存中有两个DownloadJobs(一个在"活动站点",一个在"服务站点").

任何建议如何更好地解决这个问题?

静态实例(例如DownloadScheduler(Singleton))是否会被低内存的android系统释放?那么将子类化应用程序并保持引用(非静态)避免这个问题?

singleton android

8
推荐指数
1
解决办法
6438
查看次数

TextView与背景颜色仅在文本本身

我如何实现这样的事情:

在此输入图像描述

我想在一个TextView中做到这一点.设置TextView的背景颜色不起作用.

我想它应该可以用spannable,但我不知道如何.

在HTML中我会这样做:

<html>
<body>
        <span style="background:#CCCCCC;">first line <br /> second long line </span>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在Android上做到这一点.最后一个选项是将文本拆分为两个文本视图,并将每个textviews背景颜色和/ height设置为wrap_content.但由于单词的文本长度/数量可以是动态的,我需要计算每个单词的长度等.必须有更好的方法:)

android textview

8
推荐指数
1
解决办法
3305
查看次数

将jetty 7更新为jetty 8:java.lang.NoClassDefFoundError:javax/servlet/FilterRegistration

我试图通过嵌入jetty开发Web服务器.所以对于jetty 7.3一切正常.昨天我将jetty库更新到最新版本8.0.3,现在我通过创建一个ServletContextHandler得到了一个Exception.

线程"main"中的异常java.lang.NoClassDefFoundError:org.eclipse.jetty.servlet.ServletContextHandler中的javax/servlet/FilterRegistration.(ServletContextHandler.java:126)org.eclipse.jetty.servlet.ServletContextHandler.(ServletContextHandler.java :106)在org.gemsjax.server.GemsJaxServer.main(GemsJaxServer.java:38)的org.eclipse.jetty.servlet.ServletContextHandler.(ServletContextHandler.java:94)

所以我做的是:

    public static void main(String[] args) {

     Server server = new Server(8080);


        ServletContextHandler servletContext = new ServletContextHandler(ServletContextHandler.SESSIONS);
        servletContext.setContextPath("/servlets");
        servletContext.addServlet(new ServletHolder( new CollaborationWebSocketServlet()),"/collaboration");


        // The ResourceHandler to handle static web content
        ResourceHandler resourceHandler = new ResourceHandler();
        resourceHandler.setDirectoriesListed(true);
        resourceHandler.setWelcomeFiles(new String[]{ "index.html" });


        resourceHandler.setResourceBase("./war/");


        ContextHandler resourceContext = new ContextHandler();
        resourceContext.setContextPath("/static");
        resourceContext.setHandler(resourceHandler);



        HandlerCollection handlers = new HandlerCollection();


        handlers.addHandler(resourceContext);
        handlers.addHandler(servletContext);

        server.setHandler(handlers);

        try {
            server.start();
            server.join();
        } catch (Exception e) {
            e.printStackTrace();
        }


}
Run Code Online (Sandbox Code Playgroud)

抛出异常的行是:

ServletContextHandler servletContext = new ServletContextHandler(ServletContextHandler.SESSIONS);
Run Code Online (Sandbox Code Playgroud)

我使用ubuntu 11.04: …

java jetty

7
推荐指数
1
解决办法
2万
查看次数

Android WebView:确定<a> target ="_ blank"

是否可以检查用户是否已点击带有target ="_ blank"的html链接.

我想要做的是在我的应用程序中在WebView中显示htlm,但在android默认浏览器中启动"外部"链接."外部"链接对我来说是一个target ="_ blank"的链接.所有其他链接应在webview中处理.

例如:用户在我的WebView中点击这样的链接:

<a href="http://www.google.com" target="_blank">new window</a>
Run Code Online (Sandbox Code Playgroud)

然后我想在Android浏览器中打开给定的URL.

我用shouldOverrideUrlLoading()尝试了它,但此时我无法确定目标是"_blank"还是普通链接(没有目标).

我也试过setSupportMultipleWindows(true); 与onCreateWindow()结合使用,但在此回调中我无法获取url.

我无法更改显示的HTML,因此我无法使用带有addJavascriptInterface()的JavaScript Bridge

我还可以做些什么?还有其他想法吗?

javascript android webview

7
推荐指数
2
解决办法
4974
查看次数

每次操作数据时是否需要调用getWritableDatabase()

我有一个关于android中的sqlite数据库的新手问题:

每次操作数据时,我是否真的需要检索可写数据库?

那么我可以像这样写一个DAO:

class Dao {

        private final SQLiteDatabase database;

        public Dao(SQLiteOpenHelper databaseHelper){

             database = databaseHelper.getWritableDatabase();
    }

    public void insert(...){

       ContentValues cv = new ContentValues(4);
       database.insertOrThrow(TABLE, null, cv);
       ...
    }


    public void update(...){
        ContentValues cv = new ContentValues(4);
        database.update(....);
    }
}
Run Code Online (Sandbox Code Playgroud)

或者我必须像这样写我的道:

class Dao {

        private final SQLiteOpenHelper databaseHelper;

        public Dao(SQLiteOpenHelper databaseHelper){

             this.databaseHelper = databaseHelper
    }

    public void insert(...){

       SQLiteDatabase database = databaseHelper.getWritableDatabase();
       ContentValues cv = new ContentValues(4);
       database.insertOrThrow(TABLE, null, cv);
       ...
    }


    public void update(...){
        SQLiteDatabase database = databaseHelper.getWritableDatabase(); …
Run Code Online (Sandbox Code Playgroud)

sqlite android

7
推荐指数
1
解决办法
2万
查看次数