小编Jag*_*uar的帖子

使用GreenRobot事件总线的Android中的IPC

我需要使用(greenrobot)EventBus与远程服务进行通信.不幸的是,它似乎不适用于IPC.看看代码,我也没有看到解决方法.任何帮助,将不胜感激 !

奖金问题 - 是否还有支持IPC的其他EventBuses(适用于Android)?

android greenrobot-eventbus

8
推荐指数
2
解决办法
1163
查看次数

IntentService的蓝牙连接问题

我需要通过蓝牙(到Arduino)从我的Android应用程序传输一些数据.我不是从Arduino读回/接收任何东西.对于我的单线程需求,我使用了IntentService.配对后,我的代码第一次连接和发送数据时工作正常.发送数据后没有错误我断开连接.但是当我第二次尝试连接时,我在尝试myBluetoothSocket.connect()时出现以下错误:

读取失败,套接字可能关闭或超时,读取ret:-1

唯一的解决方案是关闭Arduino设备并重新连接(如果我强制停止应用程序并尝试重新连接,则无效).

请注意,如果我生成2个线程(每个线程用于读取和写入),无论我连接多少次并发送数据(从而证明Arduino端没有任何错误,"阻止"旧连接),一切正常.

这是我的Android代码:

import android.app.IntentService;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.content.Intent;
import android.content.Context;
import android.os.Build;
import android.os.ParcelUuid;
import android.widget.Toast;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.reflect.Method;
import java.util.UUID;

public class DataTransmissionService extends IntentService {

    private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
    private static final String TAG = "DataTransmissionService";

    private BluetoothAdapter btAdapter = null;
    private BluetoothSocket btSocket = null;
    private OutputStream outStream = null;
    private BluetoothDevice device = null;

    public DataTransmissionService() {
        super("DataTransmissionService");
    }

    @Override
    protected …
Run Code Online (Sandbox Code Playgroud)

android bluetooth

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

Android库模块中的Google Analytics跟踪器文件

我正在尝试将我的Google Analytics代码拆分为来自我的主应用程序(包com.xyz)的单独模块(包com.abc).我正面临着这些问题:

  1. 我应该为app模块或库模块生成跟踪器吗?
  2. 我应该在哪里放置这个跟踪器 - 应用程序或库模块?
  3. 我的目标是通过一些接口在库模块中创建和处理所有Analytics.我也希望将这个库用于其他项目; 所以我不想把跟踪器文件放在库模块本身.有没有办法可以在库模块中初始化跟踪器,但是将XML文件保存在app模块中?

我尝试过(并且失败了):

  1. 我为com.abc和com.xyz生成了跟踪器文件
  2. 我已经尝试了两个模块中两个文件的所有排列; 但库模块无法解析R.xml.global_tracker.作为Google Analytics新手,我不知道是否必须复制/粘贴任何跟踪器文件.在创建库模块之前,R.xml.global_tracker在主模块中自动解析.

android google-analytics

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

当列数发生变化时,动画回收器查看网格

我使用的是RecyclerViewGridLayoutManager.用户可以在2到4之间切换跨度计数,这将导致动画将每个单元格的内置翻译动画运行到其新位置.我到目前为止使用的代码是:

TransitionManager.beginDelayedTransition(moviesGridRecycler);
gridLayoutManager.setSpanCount(NEW_SPAN_COUNT);
adapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这对我来说一直很好,但现在我需要为每个跨度计数设置不同的布局.为了支持这一点,我有两种视图类型RecyclerView,因为当移动到新的跨度计数时视图类型被更改,RecyclerView无法看到它是"相同"的内容,并且不运行默认的转换动画.

在此输入图像描述

如果我启用布局转换,我会获得视图输入动画,而不是查看位置更改动画.两个跨度计数的单元格视图的宽度和高度均为match_parentwrap_content.

作为替代方案,我尝试将所有新视图类型放在一起,只有一种视图类型.我有一个FrameLayout,它包含两个跨度计数的视图.在onBindViewHolder(),我只是切换子视图的可见性.这也导致没有动画.

我跟着这个帖子这个,但无法解决我的问题.

完整代码:

    class ItemFragment : Fragment() {
    private var spanCount = 2
    lateinit var recyclerView: RecyclerView
    lateinit var button: Button

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                              savedInstanceState: Bundle?): View? {
        val view = inflater.inflate(R.layout.fragment_item_list, container, false)
        recyclerView = view.findViewById(R.id.listView)
        recyclerView.apply {
            adapter = MyItemRecyclerViewAdapter(DummyContent.ITEMS, spanCount)
            layoutManager = GridLayoutManager(context, spanCount)
            addItemDecoration(RecyclerGridDecoration(context))
        }
        button = …
Run Code Online (Sandbox Code Playgroud)

android android-animation android-recyclerview

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

内存分配给C++中的函数

我还是一个C++新手.刚刚开始读到类的静态成员函数不是特定于对象的 - 所有对象的成员函数都有一个副本.

现在我脑子里出现了两个问题:

  1. 普通函数和静态函数"仅在内存分配方面"有什么区别?

  2. 如果成员函数包含一些局部变量怎么办?在这种情况下,函数"应该"具有该变量的单独副本 - 特定于调用该函数的对象...如何在C++中解决此问题?

谢谢 !

c++ static function

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

Kotlin VerifyError:未初始化的对象存在于后向分支90上

我正在使用Kotlin入门指南首次在IntelliJ IDEA上使用以下配置设置Kotlin:

IntelliJ IDEA 2017.2.5
Build #IC-172.4343.14, built on September 26, 2017
JRE: 1.8.0_152-release-915-b12 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Mac OS X 10.11.6
Run Code Online (Sandbox Code Playgroud)

我使用以下代码在新的Kotlin项目中创建了一个App.kt文件:

fun main(args: Array<String>) {
    println("hello")
}
Run Code Online (Sandbox Code Playgroud)

在通过IDE运行代码时,我收到以下错误:

Error:Internal error: (java.lang.VerifyError) Uninitialized object exists on backward branch 90
Exception Details:
  Location:
    org/jetbrains/kotlin/jps/build/KotlinBuilder.createCompileEnvironment(Ljava/util/Map;Lorg/jetbrains/kotlin/incremental/components/LookupTracker;Lorg/jetbrains/jps/incremental/CompileContext;Lorg/jetbrains/kotlin/jps/build/KotlinBuilder$MessageCollectorAdapter;)Lorg/jetbrains/kotlin/compilerRunner/JpsCompilerEnvironment; @171: goto
  Reason:
    Error exists in the bytecode
  Bytecode:
    0000000: bb03 fe59 b703 ff3a 0619 063a 0719 0713
    0000010: 02d7 2cb6 0403 5719 0713 0405 bb04 0759
    0000020: 2b3a …
Run Code Online (Sandbox Code Playgroud)

intellij-idea kotlin

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

MQTT与MQ设计考虑因素

我这里没有具体的问题; 只需要一些设计指南.

我在Node.js,MQTT和Websockets上看到了这篇文章.我想我们可以使用Node/Java + ActiveMQ + Websockets实现类似的目的.我的查询是如何在MQ和MQTT之间进行选择的?与ActiveMQ相比,我能否安全地在大中型项目中使用像mosquitto这样的"开放式"服务器?

本文有一些见解,似乎我应该同时使用MQ和MQTT,因为如果我将来获得轻量级客户端,MQTT可能会有所帮助.

谢谢 !

activemq-classic mq mqtt

6
推荐指数
1
解决办法
5907
查看次数

wait-notify和CountDownLatch之间的区别

我需要一些帮助来理解使用CountDownLatch优于传统的wait-notify的优点.我认为notifyAll()确实做了同样的事情,它似乎更容易使用(也许是因为熟悉).

另外,来自CountDownLatch的wait()和await()有什么区别?

谢谢 !

编辑:我想我需要改写我的查询:

Await()根据文档说:

除非线程被中断,否则导致当前线程等待锁存器倒计数到零.

对我来说很难看出wait()和await()之间的区别 - await()确实在封面下使用了wait(),而且当count到零时似乎有一个隐式的notifyAll().

我的意思是,为什么我不应该简单地使用wait-notifyAll()机制(使用我自己的计数器变量处理),而不是去CountDownLatch?

java concurrency synchronization

6
推荐指数
1
解决办法
5100
查看次数

属性动画与查看新Android代码的动画

我是Android动画的新手,正在阅读介绍性文章.该开发人员指南说,观看动画是一个老的系统易于使用的

作为一个初学者,我应该随时投资了解视图动画的工作原理,还是应该完全专注于属性动画?是否有某些属性动画无法做到?对于像旋转/翻译这样简单的东西,使用属性动画"相对"非常困难吗?

android android-animation

6
推荐指数
1
解决办法
2225
查看次数

CoordinatorLayout Behavior 是否只能应用于 CoordinatorLayout 的直接子代?

根据我目前的阅读,Behavior只能适用于CoordinatorLayout. 但是下面的代码让我很困惑:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context=".ScrollingActivity">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/app_bar"
        android:layout_width="match_parent"
        android:layout_height="@dimen/app_bar_height"
        android:fitsSystemWindows="true"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/toolbar_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            app:contentScrim="@android:color/holo_red_light"
            app:layout_scrollFlags="scroll"
            app:toolbarId="@+id/toolbar">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:layout_collapseMode="parallax"
                app:popupTheme="@style/AppTheme.PopupOverlay" />

        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>


    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.v4.widget.NestedScrollView
            android:id="@+id/nestedScrollView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            tools:context=".ScrollingActivity"
            tools:showIn="@layout/activity_scrolling">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/text_margin"
                android:text="@string/large_text" />

        </android.support.v4.widget.NestedScrollView>
    </FrameLayout>
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Test Button"
        android:visibility="visible"
        android:layout_gravity="bottom"
        app:layout_anchor="@id/nestedScrollView"
        app:layout_behavior="am.i.coord.CustomBehavior"
        />

</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

NestedScrollView不是直接孩子CoordinatorLayout(被包裹在一个FrameLayout里),但仍然有一个Behavior应用,这是正确的触发AppBarLayout变化。

Button我在一个自定义同级别增加 …

android android-coordinatorlayout

6
推荐指数
1
解决办法
1842
查看次数