小编Eri*_* S.的帖子

如何实例化Android活动(使用反射)?

今天在Android采访中被问到这个问题.我回答了平时,你知道,意图+ startActivity等.然后采访者更有针对性地问道,

"是的,但它实际上在哪里被实例化?你不会在任何地方调用新的Activity".

现在我想到了,我真的不知道.他暗示它使用了Java反射,但我没有很多经验,而且我只用它来访问Android SDK中的一些变量.

有人可以解释如何使用反射实例化Activity,为什么?奖励点可以洞察采访者在了解这一点时所看到的价值.

java reflection android

20
推荐指数
2
解决办法
2294
查看次数

在重新获得焦点之前无法完成暂停的活动

我想完成()一个透明活动下面的暂停活动.

我有一项活动,称为活动A.当活动A处于活动状态时,可能会发生两件事;

  • 我们可以启动(透明)活动B.

  • 我们可以接收异步回调来完成活动A.

这两个动作彼此非常接近.代码看起来像这样

public class ActivityA extends Activity
{
    public class DataHandler implements ContentLoader.OnDataListener
    {
        @Override
        public void onData(Cursor data)
        {
            _binder.bind(data);
        }
    }

    //If this callback is executed while Activity A is paused, it will not go into onStop until it the activity above it is finished
    private class LoaderCallbacks extends ContentLoader.LoaderCallbacks
    {
        public LoaderCallbacks(ContentLoader loader)
        {
            super(loader);
        }

        @Override
        public void onLoadFinished(
                Loader<Cursor> loader,
                Cursor cursor)
        {
            if (cursor == null || cursor.getCount() <= 0)
            { …
Run Code Online (Sandbox Code Playgroud)

multithreading android

16
推荐指数
1
解决办法
1932
查看次数

发布到我的Django API时:errorcom.google.gson.JsonParseException:无法解析json

有人能告诉我这篇文章中我做错了什么吗?

我怀疑我错误地发布到我的django API.我基本上有一个Question对象,它有一个Answers数组的字段.我可以正确发布没有答案,但当我尝试添加JsonArray的答案时,帖子失败,无法解析错误.

LogCat摘录

05-21 00:12:52.875  15720-15720/com.pipit.waffle D/ConnectToBackend? {"text":"gf or ed","answers":[{"text":"gf","votes":0,"id":null},{"text":"ed","votes":0,"id":null}],"user_id":"temp user id"}
05-21 00:12:52.875  15720-15720/com.pipit.waffle D/ConnectToBackend? postQuestion called with {MY API} and has errorcom.google.gson.JsonParseException: unable to parse json
05-21 00:12:52.875  15720-15720/com.pipit.waffle D/ConnectToBackend? postQuestion returns result with NULL
Run Code Online (Sandbox Code Playgroud)

Django Side

serializers.py

class EmbeddedAnswerSerializer(serializers.ModelSerializer):
    votes = serializers.IntegerField(read_only=True)
    picture = serializers.ImageField(read_only=True)
    class Meta:
        model = Answer
        fields = ('id', 'picture', 'text', 'votes',)


class QuestionSerializer(serializers.ModelSerializer):
    answers = EmbeddedAnswerSerializer(many=True, source='answer_set')

    class Meta:
        model = Question
        fields = ('id', …
Run Code Online (Sandbox Code Playgroud)

django rest post json

12
推荐指数
1
解决办法
826
查看次数

是否有可能杀死"android:persistent = true"系统级应用?

我有一个应用程序,它只是一个启动时启动的服务.我正在系统级开发,所以我正在使用android:persistent=true,以确保我的服务不会在内存压力下被杀死.

但是,我发现这可以防止我在任何条件下杀死我的服务.我仍然希望能够自己杀死它 - 有没有办法做到这一点,还是不可能,因为清单中定义了"persistent = true"?

如果这是不可能的,我怎样才能保护我的过程免受内存压力下的死亡?我可以手动定义优先级吗?也许oom_score还是什么?

android

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

如何更改区域设置以使用拉丁塞尔维亚语(而不是西里尔塞尔维亚语)

塞尔维亚语有拉丁字母和西里尔字母。在 Android 的日期和时间选择器小部件中,显示的塞尔维亚语言区域字母似乎是西里尔字母,如此处所示。

在此输入图像描述

我想更改区域设置,以便 Android 小部件使用拉丁塞尔维亚字母。

当前的语言/国家代码(产生西里尔字母)分别是srRS。因此,我的 setLocale 函数被称为

setLocale("sr", "RS");
Run Code Online (Sandbox Code Playgroud)

这是我不确定的部分 - 根据localeplanet.com,拉丁塞尔维亚语的本地代码是sr_Latn_RS。但是,我都尝试过

setLocale("sr_Latn", "RS");
//and
setLocale("sr_Latn_RS", "RS");
Run Code Online (Sandbox Code Playgroud)

两者都不起作用(没有变化,默认为英语)。根据 Android 文档,setLocale 似乎需要两个字母代码。

语言代码是 ISO 639-1 定义的两个字母的小写 ISO 语言代码(例如“en”)。国家/地区代码是 ISO 3166-1 定义的两个字母大写 ISO 国家/地区代码(例如“US”)。变体代码未指定。

那么如何指定拉丁塞尔维亚语区域设置代码?或者它不存在?

android locale country-codes

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

为什么我使用wait()/ notify()对象是什么问题,如果我只是想在线程之间发出信号?

所以我有一个经典案例"我的代码可行,但我不知道为什么".

我有一个创建线程的程序,当我从扫描仪接收到某个输入时,我将字符串的控制权传递给工作线程.为此,我创建了我的线程wait(),当我从UI线程获得正确的输入时,我通知().

这是我的代码.为简单起见,我刚刚使用了一个线程.

package main;

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;


class ThreadDemo extends Thread {
       private Thread t;
       private String threadName;
       volatile Boolean keepRunning = true;
       private Queue<String> q = new LinkedList<String>();


       ThreadDemo( String name){
           threadName = name;
           System.out.println("Creating " +  threadName );
       }

       public void in(String ex){
           q.add(ex);
           System.out.println("Added " + ex + "to queue of " + threadName);
           synchronized(t){
               t.notify();
           }       
       }


       public void run() {
           System.out.println("Starting to loop.");
            while (keepRunning) {
                try {
                    //Why does it …
Run Code Online (Sandbox Code Playgroud)

java concurrency multithreading wait thread-synchronization

3
推荐指数
1
解决办法
321
查看次数