Android:在islatedProcess中获取空值

Posted

技术标签:

【中文标题】Android:在islatedProcess中获取空值【英文标题】:Android: Getting null value in islatedProcess 【发布时间】:2018-10-23 23:50:36 【问题描述】:

我有一个运行独立进程的应用程序。

问题是,我从另一个服务中获取了正确的用户 ID,但是当我执行 getUsersNotfs(url) 时,我在 String s onPostExecute: 05-14 11:23:39.806 17705-17705/com.example 上得到空值。糖尿病:offline_notifications I/System.out:空

但是,如果我在没有独立进程的情况下运行它,则字符串是正确的,并且我得到正确的结果 (["RecordID":"1","UserID":"1","RecordDate":"2018-05- 08 00:00:00"])

这是我的代码:

传递用户 ID:

@Override
public int onStartCommand(Intent intent, int flags, int startId) 
    super.onStartCommand(intent, flags, startId);
    uid = intent.getStringExtra("UserID");
    startTimer();
    return START_STICKY;


public void getUserNotfs(final String urlWebService) 

    class GetJSON extends AsyncTask<Void, Void, String> 

        @Override
        protected void onPreExecute() 
            super.onPreExecute();

        

        @Override
        protected void onPostExecute(String s) 
            super.onPostExecute(s);
            System.out.println(s);

        


        @Override
        protected String doInBackground(Void... voids) 

            try 
                URL url = new URL(urlWebService);
                System.out.println(url);
                HttpURLConnection con = (HttpURLConnection) url.openConnection();
                StringBuilder sb = new StringBuilder();

                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));

                String json;

                while ((json = bufferedReader.readLine()) != null) 

                    sb.append(json + "\n");
                
                return sb.toString().trim();
             catch (Exception e) 
                return null;
            

        
    

    GetJSON getJSON = new GetJSON();
    getJSON.execute();

谢谢

【问题讨论】:

放个debug看看有没有抓到异常 pastebin.com/n1DE6KQT@MạnhQuyếtNguyễn 【参考方案1】:

孤立的进程将有它自己的实例,因此你没有得到价值。

尝试使用一些持久性存储,例如 SQLite,将值保留在那里并从您的隔离进程中访问。

你会明白的。

如https://developer.android.com/guide/topics/manifest/service-element#isolated中所述

您的服务与系统的其余部分隔离,没有自己的权限。这意味着它没有INTERNET 权限。因此无法获取数据。

【讨论】:

但我需要在 1 秒内检查在线数据库 1 以获取值。这些值以 JSON 格式返回。 解决了问题.. 创建了服务但没有隔离!谢谢

以上是关于Android:在islatedProcess中获取空值的主要内容,如果未能解决你的问题,请参考以下文章

Android Gradle 插件Gradle 自定义 Plugin 插件 ⑤ ( 自定义插件中获定义方法 | 在插件中创建 Gradle 任务 | 代码示例 )

Android 人脸地标裁剪

Android GridView 焦点顺序

Android 电源管理器唤醒锁

如何在php中获得下个月的同一天

在 C/C++ 中获得正模的最快方法